码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-03-13 19:00:58      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:混淆   for   执行   com   class   返回   call   cal   star   

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 同步方法中的异步和异步方法中的异步

标签:混淆   for   执行   com   class   返回   call   cal   star   

原文地址:https://www.cnblogs.com/ilison/p/12488102.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!