Task.Factory.StartNew()与TaskEx.Run()的区别

13

Task.Factory.StartNew() 基本上是接收一个 Action 并返回一个 Task。在 Async CTP 中,我们有 TaskEx.Run(),它也接收一个 Action 并返回一个 Task。它们似乎做着相同的事情。为什么会引入 TaskEx.Run()?


11
在.NET 4.5 RTM框架中,TaskEx.Run现在变成了Task.Run。TaskEx只是作为一个临时措施而存在。 - Simon_Weaver
2个回答

14

Anders Hejlsberg在Channel9的采访中简要谈到了这个问题。显然,Task.Run只是Task.Factory.StartNew的简写形式。由于现在还处于早期CTP阶段,我们不确定Task.Run是否会被采纳。我个人希望它不会,因为这有点多余。:)


2
它确实如此 :-) 我希望文档中提到它是Task.Factory.StartNew的速记方式 - http://msdn.microsoft.com/en-us/library/hh195051.aspx - Simon_Weaver
8
这只是部分正确。博客文章讨论了从Task.Run中预期的内容,特别是在操作返回Task<TResult>的情况下。Task.Factory.StartNew将返回一个Task<Task<TResult>>,需要使用Unwrap获取内部任务,而Task.Run将返回一个带有隐式解包的Task<TResult> - Anupam

6

Stephen Toub在他的文章中提到过这个。它们是相同的,其中一个是另一个的简写。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接