c# - ContinueWith 主线程上的任务

标签 c# c#-4.0 task

如果这是一个简单的问题,请原谅我;我无法用足够通用的方式来表达它来搜索答案。

考虑这段代码:

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# - ContinueWith 主线程上的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11397163/

相关文章:

c# - JavaScript 客户端函数未针对 ASP 自定义验证器触发

c# - 如何使用 Action 过滤器更改输入参数

javascript - 发送电子邮件而不等待操作完成执行

c# - 如何进行方法签名缓存?

C# Windows 窗体应用程序 Process.Start() 给出 "Access is denied"错误

wcf - 如何同步调用 WCF 服务

c# - 避免在 Type.GetType() 中给出命名空间名称

c# - .NET 中的 N 层架构模式中的哪一层应该填充并发和任务

c# - 如何捕获线程中发生的 Asp.net 核心中的异常

java - 并行化远程服务调用