小编Mar*_*cin的帖子

为什么 IParseable<T> 需要递归?

为什么要IParseable<T>对 施加T : IParseable<T>约束T?这个递归约束有什么用呢? 在此输入图像描述

c# recursion interface c#-11.0 .net-generic-math

1
推荐指数
1
解决办法
566
查看次数

TaskScheduler.Current何时是UI TaskScheduler?

在这篇文章中,Stephen 描述了在外部 StartNew(参见下面的代码片段)中,TaskScheduler.Current 是我们的 UI 任务调度程序。事实上,下面代码的输出似乎表明所有内容都是在 UI 线程上执行的。然而,当我尝试确认这一点时,我得到了不同的答案:

private void Button_Click(object sender, RoutedEventArgs e)
{
    var uiTaskScheduler = TaskScheduler.FromCurrentSynchronizationContext();
    var ui = new TaskFactory(TaskScheduler.FromCurrentSynchronizationContext());
    ui.StartNew(() =>
    {
        Debug.WriteLine("TaskScheduler.Current == UI TaskScheduler: " + (uiTaskScheduler == TaskScheduler.Current));
        Debug.WriteLine("UI on thread " + Environment.CurrentManagedThreadId);
        Task.Factory.StartNew(() =>
        {
            Debug.WriteLine("Background work on thread " + Environment.CurrentManagedThreadId);
        });
    });
}
Run Code Online (Sandbox Code Playgroud)

和输出:

TaskScheduler.Current == UI TaskScheduler: False
UI on thread 1
Background work on thread 1
Run Code Online (Sandbox Code Playgroud)

为什么会uiTaskScheduler == TaskScheduler.Current返回 false?

c# wpf task task-parallel-library

0
推荐指数
1
解决办法
80
查看次数