Task.Factory.StartNew() 基本上是接收一个 Action 并返回一个 Task。在 Async CTP 中,我们有 TaskEx.Run(),它也接收一个 Action 并返回一个 Task。它们似乎做着相同的事情。为什么会引入 TaskEx.Run()?
Task.Factory.StartNew() 基本上是接收一个 Action 并返回一个 Task。在 Async CTP 中,我们有 TaskEx.Run(),它也接收一个 Action 并返回一个 Task。它们似乎做着相同的事情。为什么会引入 TaskEx.Run()?
Anders Hejlsberg在Channel9的采访中简要谈到了这个问题。显然,Task.Run
只是Task.Factory.StartNew
的简写形式。由于现在还处于早期CTP阶段,我们不确定Task.Run
是否会被采纳。我个人希望它不会,因为这有点多余。:)
Task.Run
中预期的内容,特别是在操作返回Task<TResult>
的情况下。Task.Factory.StartNew
将返回一个Task<Task<TResult>>
,需要使用Unwrap
获取内部任务,而Task.Run
将返回一个带有隐式解包的Task<TResult>
。 - Anupam