c# – UI线程上的任务继续

是否有一种“标准”方式来指定任务继续应该在创建初始任务的线程上运行?

目前我有下面的代码 – 它是工作,但跟踪分派器和创建第二个动作似乎不必要的开销。

dispatcher = Dispatcher.CurrentDispatcher;
Task task = Task.Factory.StartNew(() =>
{
    DoLongRunningWork();
});

Task UITask= task.ContinueWith(() =>
{
    dispatcher.Invoke(new Action(() =>
    {
        this.TextBlock1.Text = "Complete"; 
    }
});
最佳答案
使用TaskScheduler.FromCurrentSynchronizationContext()调用继续:

    Task UITask= task.ContinueWith(() =>
    {
     this.TextBlock1.Text = "Complete"; 
    }, TaskScheduler.FromCurrentSynchronizationContext());

这只适用于当前执行上下文在UI线程上。

转载注明原文:c# – UI线程上的任务继续 - 代码日志