根据我的理解,他们是一样的,但我很想知道一个人是否比另一个人有任何优势。如果没有,为什么团队不愿意宣布同一件事的两个版本?
答案 0 :(得分:0)
从两个函数的MSDN文档中:
对于TaskFactory.StartNew<TResult>
:调用StartNew在功能上等同于使用其构造函数之一创建Task<TResult>
...
对于TaskFactory<TResult>.StartNew
:调用StartNew在功能上等同于使用Task<TResult>
构造函数之一创建任务...
实际上与功能观点略有不同:
第一次使用Task<T>
类时,静态构造函数会创建一个新的TaskFactory<T>
对象并存储它。这实际上是一个小对象,但占用的内存将一直持续到AppDomain的生命周期结束,但Task
的静态构造函数只创建一个TaskFactory
对象。
因此,如果您将使用许多类型来创建任务,请使用Task.Factory.StartNew<T>
,因为您不会让运行时创建所有TaskFactory<T>
个对象。
如果只有一种或两种类型,请将Task<T>.Factory
分配给变量并将其用于更简单的代码。
更新:正如@Kirill Shlenskiy在评论中提到的,我犯了一个错误。所以这两者之间真的没什么区别。