await Task.Yield(); 超简单理解!
Posted zhuwansu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了await Task.Yield(); 超简单理解!相关的知识,希望对你有一定的参考价值。
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(); 超简单理解!的主要内容,如果未能解决你的问题,请参考以下文章
5min+帮我排个队,谢谢。await Task.Yield()
为啥 Thread.CurrentPrincipal 需要“等待 Task.Yield()”才能正确流动?