等待Task.StartNew(()=> ...)的适当情况是什么?

时间:2017-09-27 03:56:15

标签: c# .net multithreading asynchronous async-await

我想知道是否有人可以帮我找出正确使用

之类的代码
var result = await Task.StartNew(() => ...); 

var result = await Task<T>.StartNew(() => ...); 

据我所知,简单地

是没有意义的
await Task.StartNew(() => ...);

await Task<T>.StartNew(() => ...);

因为如果你不需要结果,那么你可能会忘记

Task.StartNew(() => ...) 

Task.StartNew<T>(() => ...) 

就像

Thread A | ----- Stuff before the Task.StartNew ---- | ---- Stuff after the Task.StartNew ------------------
Thread B | ------------ ??? ------------------------ | The () => .... inside the Task.StartNew -------------

有人能为我提供一个真实的例子,说明何时有用?

1 个答案:

答案 0 :(得分:3)

无!

除非您确切知道自己在做什么以及为什么这样做,否则永远不要将Task.Factory.StartNewTask<T>.Factory.StartNewasync-await一起使用。

对任务结果没有awaitng并不意味着你不关心结果值。这意味着你不关心它是否成功完成,或者即使它完成了。