• Async/Await 同步方法中的异步方法和异步方法中的异步方法


    1、同步方法中有异步方法

      执行顺序是:Await就等待。同步方法中当遇见异步方法中Await将直接跳出异步方法,继续往下执行同步方法的代码,当异步Await处理完后接着CallBack到异步方法中,执行(刚跳出)Await下面的代码

      

     public void DoRun1()
            {
                Console.WriteLine("Caller: Before call");
                ShowDealyAsync();
                Console.WriteLine("Caller: After call");
            }
    
            public async Task ShowDealyAsync()
            {
                sw.Start();
                Console.WriteLine("  Before Delay: {0}", sw.ElapsedMilliseconds);
                await Task.Delay(3000);   //执行到await表达式时,立即返回到调用方法,等待5秒后执行后续部分
                Console.WriteLine(" After Delay : {0}", sw.ElapsedMilliseconds);//后续部分
            }

     

     2. 异步方法中的异步方法

      执行顺序是自上而下得顺序,跟同步方法没两样

    所以,一定要注意别把异步方法和同步方法弄混淆。 

     await Task.Delay(TimeSpan.FromSeconds(3));  这句代码在不同的方法中调用会出现不同的结果。

    看下面代码:

     DoRun1()方法和Show方法,在同步方法中调用会有不同的结果。

    DoRun1()结果: 堵塞三秒

     Show方法结果:,然后等待三秒,打印出后两句

  • 相关阅读:
    java之Arrays.asList
    MySql索引
    Maven私服搭建
    基于Docker的GitLab搭建
    ubuntu新建组合用户命令不管用
    Linux 安装jdk
    消息队列
    Netty之大动脉Pipeline
    Netty之大名鼎鼎的EventLoop
    Netty之揭开BootStrap 的神秘面纱
  • 原文地址:https://www.cnblogs.com/ilison/p/12488102.html
Copyright © 2020-2023  润新知