zoukankan      html  css  js  c++  java
  • 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.

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

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

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

    
    
  • 相关阅读:
    文件载入功能
    代码调试功能
    实用项
    连贯操作
    AR模式
    表名操作
    字段映射
    ThinkPHP中的模型二
    创建数据对象
    HDU 4888 Redraw Beautiful Drawings(最大流+判最大流网络是否唯一)
  • 原文地址:https://www.cnblogs.com/zhuwansu/p/11230924.html
Copyright © 2011-2022 走看看