等待Task.Run与等待

马蒂亚斯

我已经在网上搜索了许多关于Task.Runvs异步的问题,但是在这种特定的使用情况下,我不太了解其中的区别。我相信情况很简单。

await Task.Run(() => LongProcess());

await LongProcess());

其中LongProcess有一个异步方法,其中有一些异步调用,例如使用await调用db的异步方法ExecuteReaderAsync()

问题:

在这种情况下,两者之间有什么区别吗?任何帮助或输入表示赞赏,谢谢!

a安

Task.Run 可能会在另一个线程上发布要处理的操作。那是唯一的区别。

这可能有用-例如,如果LongProcess不是真正的异步,它将使调用者更快地返回。但是对于真正的异步方法而言,使用毫无意义Task.Run,这可能会导致不必要的浪费。

但是要小心,因为的行为Task.Run会根据重载分辨率而变化。在您的示例中,Func<Task>将选择过载过载将(正确)等待LongProcess完成。但是,如果使用了非任务返回的代表,Task.Run仅会等待执行到第一await(注意,这是怎么TaskFactory.StartNew一直循规蹈矩,所以不使用)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Task.Run()是否需要异步/等待?

来自分类Dev

如何等待task.run

来自分类Dev

如何等待task.run

来自分类Dev

Task.Run(()MethodName())并等待Task.Run(async()=> MethodName())

来自分类Dev

等待或Task.FromResult

来自分类Dev

无法等待Task <MyObject>

来自分类Dev

在使用Task.Run()创建的任务上调用等待

来自分类Dev

异步/等待VS Task.Run:何时使用?如何使用?

来自分类Dev

异步/等待与Task.Run在C#中

来自分类Dev

等待Task.Run花费比预期更长的时间

来自分类Dev

在使用Task.Run()创建的任务上调用等待

来自分类Dev

await Task.Run 实际上并不等待

来自分类Dev

异步等待Task <T>而不进行异步/等待

来自分类Dev

等待Task.WhenAll不等待所有任务完成

来自分类Dev

为什么Task <TResult>在等待结果之前先等待它?

来自分类Dev

异步等待Task <T>而不进行异步/等待

来自分类Dev

等待新的Task <T>(...):任务不运行?

来自分类Dev

“等待Task.Yield()”及其替代方法

来自分类Dev

如何等待Func <Task <string >>?

来自分类Dev

Task <TResult> .Result vs等待任务

来自分类Dev

'无法等待Task <string>'(PCL Xamarin Studio)

来自分类Dev

Task.Wait()不等待任务完成

来自分类Dev

使用Task.WaitAll()处理等待的任务?

来自分类Dev

如何取消等待Task.Delay()?

来自分类Dev

任务等待vs Task.WaitAll

来自分类Dev

C#Task.WaitAll不在等待

来自分类Dev

任务等待vs Task.WaitAll

来自分类Dev

Task.WaitAll没有在等待-解释

来自分类Dev

“等待Task.Yield()”及其替代方法