bav*_*aza 8 c# task task-parallel-library
请考虑以下代码:
// MyKickAssTaskScheduler is a TaskScheduler, IDisposable
using (var scheduler = new MyKickAssTaskScheduler())
{
Task foo = new Task(() => DoSomething());
foo.ContinueWith((_) => DoSomethingElse());
foo.Start(scheduler);
foo.Wait();
}
Run Code Online (Sandbox Code Playgroud)
是否ContinueWith()保证在我的调度程序上运行任务?如果没有,它将使用哪个调度程序?
StartNew,ContinueWith将默认为TaskScheduler.Current,当未在任务(MSDN)内调用时,Current将返回Default调度程序.
要避免出现默认调度程序问题,应始终将显式TaskScheduler传递给Task.ContinueWith和Task.Factory.StartNew.