码迷,mamicode.com
首页 > 其他好文 > 详细

await Task.Yield(); 超简单理解!

时间:2019-07-23 13:24:28      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:ext   span   current   continue   await   load   创建   应该   task   

await Task.Yield();//1
var data = LoadData();//2
await Task.Run(() => Do(data));//3

上面的代码类似于:

Task.Run(() => { }).ContinueWith(t => Do(LoadData()));

意思就是: loadData 如果耗时较长那么上述代码会产生阻塞,为了LoadData不阻塞 特意加了 await Task.Yield(); 

意思就是: 先排个队。

再来看注释:Creates an awaitable task that asynchronously yields back to the current context when awaited.

创建一个异步的空任务,这个任务用于等待。

意思就是: 先创建一个空任务,然后用于等待,而等待后面的代码会编译成 后续任务 ,这样就把本来应该是主任务干的活放到了一个空任务 后续任务里。

这样主任务嘚儿...就完事了。

 

 

await Task.Yield(); 超简单理解!

标签:ext   span   current   continue   await   load   创建   应该   task   

原文地址:https://www.cnblogs.com/zhuwansu/p/11230924.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!