【问题标题】:Task.Factory.StartNew() vs. TaskEx.Run()Task.Factory.StartNew() 与 TaskEx.Run()
【发布时间】:2011-05-25 11:20:12
【问题描述】:

Task.Factory.StartNew() 基本上接收一个动作并返回一个任务。在异步 CTP 中,我们有 TaskEx.Run(),它也接收一个动作并返回一个任务。他们似乎也在做同样的事情。为什么要引入 TaskEx.Run()?

【问题讨论】:

  • TaskEx.Run 现在是 .NET 4.5 RTM 框架中的 Task.Run 需要 TaskEx 作为临时措施

标签: c#-4.0 asynchronous task task-parallel-library async-ctp


【解决方案1】:

Anders Hejlsberg 在Channel9 的采访中简要谈到了这一点。显然,Task.Run 只是Task.Factory.StartNew 的简写。它仍然是早期的 CTP 天,所以我们不确定 Task.Run 是否会使其成为 int。我个人希望它不会,因为它有点多余。 :)

【讨论】:

  • 确实 :-) 我希望文档中提到它是 Task.Factory.StartNew 的简写 - msdn.microsoft.com/en-us/library/hh195051.aspx
  • 这只是部分正确。 Blog post 谈论对 Task.Run 的期望。特别是在操作返回Task<TResult> 的情况下,Task.Factory.StartNew 将返回一个Task<Task<TResult>,需要一个Unwrap 来获取内部任务,而Task.Run 将返回一个带有隐式展开的Task<TResult>
【解决方案2】:

Stephen Toub 在his article 中报道了它。它们是相同的,一个是另一个的简写。

【讨论】:

    猜你喜欢
    • 2016-04-22
    • 2011-06-27
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 2013-06-04
    • 1970-01-01
    相关资源
    最近更新 更多