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

Posted ilison

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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));  这句代码在不同的方法中调用会出现不同的结果。

以上是关于Async/Await 同步方法中的异步和异步方法中的异步的主要内容,如果未能解决你的问题,请参考以下文章

async/await 的使用

Task和async/await详解

JS不使用async/await解决数据异步/同步问题

JS不使用async/await解决数据异步/同步问题

C#多线程和异步——Task和async/await详解

第126篇: 异步函数(async和await)