如果这是一个简单的问题,请原谅我;我无法用足够通用的方式来表达它来寻找答案。
考虑这段代码:
var task = Task.Factory.StartNew(() => Whatever());
task.ContinueWith(Callback, TaskScheduler.FromCurrentSynchronizationContext())
回调方法到底是如何确定何时执行的呢?
它会等到主线程当前完成正在做的事情,还是会在异步调用完成后立即调用它?这个回调会在主线程返回之前执行的操作之前完全执行吗?
它会等到主线程当前完成正在做的事情,还是会在异步调用完成后立即调用它?
当异步调用完成时,继续操作将是预定的。该调度的效果取决于调度程序(当然),但对于“正常”WPF 或 Windows 窗体消息循环,我希望它的调度方式与调用类似Control.BeginInvoke
or Dispatcher.BeginInvoke
- 换句话说,当“主”线程完成在此线程之前安排的其余任务时。
我不希望主线程神奇地停止它正在做的事情并执行延续。它could但是,将延续任务设置为队列中的高优先级任务。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)