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方法結果:,然后等待三秒,打印出后兩句

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM