有人知道在任务上执行Task.Factory.StartNew和new Task,然后调用Start有什么不同吗?看一下反射器,似乎没有太大的不同。因此,唯一的区别可能是Task.Factory.StartNew返回一个已经启动的任务。这是正确的吗?
我知道Task.Factory.StartNew和Task.Run有不同的默认选项,Task.Run是.Net 4.5的首选选项。
发布于 2014-02-28 13:43:40
我发现了Stephen Toub的一篇很棒的this文章,它解释了在使用new Task(...).Start()时实际上存在性能损失,因为start方法需要使用同步来确保任务只调度一次。
他的建议是更喜欢在.net 4.0上使用Task.Factory.StartNew。对于.net 4.5,Task.Run为the better option。
发布于 2014-08-06 17:08:05
实际上,在the article by Stephen Toub中,他指定Task.Run()完全等同于使用带有默认参数的Task.Factory.StartNew():
Task.Factory.StartNew(someAction,
CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);https://stackoverflow.com/questions/22087005
复制相似问题