Task.Factory.StartNew vs new Task

Ned*_*nov 54 c# asynchronous c#-4.0

有没有人知道做Task.Factory.StartNewvs new Task后跟调用Start任务之间是否有任何区别.看反射器似乎没有太大的区别.所以也许唯一的区别是Task.Factory.StartNew返回已经启动的任务.它是否正确?

我知道Task.Factory.StartNew并且Task.Run有不同的默认选项,Task.Run是.Net 4.5的首选选项.

Ned*_*nov 53

我发现了Stephen Toub的这篇很棒的文章,它解释了使用时实际上存在性能损失new Task(...).Start(),因为start方法需要使用同步来确保任务只安排一次.

他的建议是更喜欢使用Task.Factory.StartNew.net 4.0.对于.net 4.5 Task.Run更好的选择.


o_c*_*o_c 17

实际上在Stephen Toub的文章中,他指定Task.Run()完全等同于使用Task.Factory.StartNew()和默认参数:

Task.Factory.StartNew(someAction, 
CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);
Run Code Online (Sandbox Code Playgroud)