Task.Factory.StartNew vs新任务
有没有人知道是否有任何区别做Task.Factory.StartNew
与new Task
之后调用Start
任务。 看reflection器似乎没有太大的区别。 所以也许唯一的区别是Task.Factory.StartNew
返回一个已经启动的任务。 它是否正确?
我知道Task.Factory.StartNew
和Task.Run
具有不同的默认选项, Task.Run
是.Net 4.5的首选选项。
我发现了Stephen Toub的这篇伟大的文章,它解释了在使用new Task(...).Start()
时实际上会有性能损失,因为start方法需要使用同步来确保只调度一次任务。
他的build议是更喜欢使用Task.Factory.StartNew
4.0。 对于.net 4.5 Task.Run
是更好的select 。
实际上, 在Stephen Toub的文章中,他指定Task.Run()与使用Task.Factory.StartNew()的默认参数完全等价:
Task.Factory.StartNew(someAction, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);