c# – 在主线程上继续执行任务

如果这是一个简单的问题,请原谅我;我不能用通用的方式来表达它来搜索答案.

考虑以下代码:

var task = Task.Factory.StartNew(() => Whatever());  
task.ContinueWith(Callback, TaskScheduler.FromCurrentSynchronizationContext())

回调方法执行时究竟如何确定?

是否会等到主线程当前完成正在执行的操作,或者在异步调用完成后立即调用它?并且这个回调是否会在主线程返回之前执行的任何操作之前完全执行?

最佳答案

Will it wait until the main thread is currently finished doing whatever it is doing, or will it get called immediately after the asynchronous call is complete?

异步调用完成后,将安排继续.调度的效果取决于调度程序(当然),但对于“普通”WPF或Windows窗体消息循环,我希望它的调度方式类似于对Control.BeginInvoke或Dispatcher.BeginInvoke的调用 – 换句话说,当“主”线程完成了在此之前安排的其余任务时.

我不希望主线程神奇地停止正在做的事情并执行延续.但是,它可以使延续成为队列中的高优先级任务.

转载注明原文:c# – 在主线程上继续执行任务 - 代码日志