Task.Factory.StartNew vs新任务

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

我知道Task.Factory.StartNewTask.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);