Task.Run是
Task.Factory.StartNew带有特定安全参数的简写:
Task.Factory.StartNew( action, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);
在.Net 4.5中添加了它,以帮助日益频繁地使用
async和卸载工作
ThreadPool。
Task.Factory.StartNew(在.Net
4.0中添加了TPL)更加健壮。您仅应在
Task.Run不够用的情况下使用它,例如在您想使用时使用
TaskCreationOptions.LongRunning(尽管当委托异步时这是不必要的。有关我的博客的更多信息:LongRunning对于Task.Run
with async-await是无用的)。更多关于
Task.Factory.StartNew在Task.Run VS
Task.Factory.StartNew
除非您找到极好的理由,否则不要创建
Taskand进行呼叫
Start()。仅当您有一部分需要创建任务但不计划任务而另一部分计划不创建时才应使用它。那几乎永远不是一个合适的解决方案,并且可能很危险。更多的“Task.Factory.StartNew”与“新任务(......)。开始”
总之,多数情况下使用
Task.Run,
Task.Factory.StartNew如果必须且永远不要使用
Start。



