小编典典

UI线程上的任务继续

c#

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

目前,我有下面的代码-它正在工作,但是跟踪调度程序并创建第二个Action似乎是不必要的开销。

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

Task UITask= task.ContinueWith(() =>
{
    dispatcher.Invoke(new Action(() =>
    {
        this.TextBlock1.Text = "Complete"; 
    }
});

阅读 257

收藏
2020-05-19

共1个答案

小编典典

调用延续TaskScheduler.FromCurrentSynchronizationContext()

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

仅当当前执行上下文在UI线程上时,这才适用。

2020-05-19