zoukankan      html  css  js  c++  java
  • C#5.0 异步编程 Async和Await--介绍

    C#5.0引入async和await关键字实现方法的异步调用。

    直接进入正题。

    async只是一个标识符,并没有实际的用途,只是用于表明某个方法是异步方法,在方法前面加上async 表示该方法为一个异步方法,方法体内部会有一个await关键字。如果没有await关键字编译器会给出警告。

    await则用于等待一个异步方法的完成,await后面的方法才是异步方法,在方法执行过程中,遇到await关键字之后,会在线程池中启动一个新的线程去执行await后的方法,并同时返回一个Task对象,调用者线程继续执行,待新线程执行完毕之后,await之后的方法会继续执行到方法末尾,并返回。

    await所启动的等待,不会导致方法调用者的线程组塞,因此,应该将其称为“异步等待”,其行为特性与多线程回调达到的效果类似

    这里有这两个方法,在main方法中调用TestAsyncInvokeUseAwait方法

    方法调用堆栈为下图

    异步调用一个方法时,调用者将不会等待被调用方法执行结束,而是立即继续执行

    执行结果如下

    这里可以看到 在执行完DoLongJob方法正在后台执行...这里之后马上就执行了main方法中后面的语句;循环在后台执行

     这里看一下异步调用的执行流程

    await之后的代码,可以将其视为一个整体。看成是完成数据处理任务之后的善后处理工作,await的功能其实与TPL中的continueWith是一样的

  • 相关阅读:
    vue 组件之间相互传值 父传子 子传父
    krpano 常用标签
    krpano生成全景图
    github的基本使用
    transform:rotate3d/tranlate3d
    css3水波纹效果
    原型的迷惑
    JS变量作用域
    LeetCode Rotate List
    LeetCode Divide Two Integers
  • 原文地址:https://www.cnblogs.com/c-supreme/p/8974295.html
Copyright © 2011-2022 走看看