是否有一种“标准”方式来指定任务延续应该在创建初始任务的线程上运行?
目前我有下面的代码 - 它正在运行,但跟踪调度程序并创建第二个 Action 似乎是不必要的开销。
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 线程上的任务延续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4331262/