国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

async和await淺析

2019-11-17 03:19:47
字體:
來源:轉載
供稿:網友

async和await淺析

要理解async和await的用法,首先要了解Task相關知識,這里不做說明,因為這不是本文的重點。

如果你已經對Task很了解,那么如何使用async和await,在此主要總結了以下三點:

  1. 只有在async方法里面才能使用await操作符;
  2. await操作符是針對Task對象的;
  3. 當方法A調用方法B,方法B方法體內又通過await調用方法C時,如果方法C內部有異步操作,則方法B會等待異步操作執行完,才往下執行;但方法A可以繼續往下執行,不用再等待B方法執行完。

對于第三點說的有點繞,所以下面結合代碼說一下:

        static void Main(string[] args)        {            Test();            Console.WriteLine("Test End!");            Console.ReadLine();        }        static async void Test()        {            await Test1();            Console.WriteLine("Test1 End!");        }        static Task Test1()        {            Thread.Sleep(1000);            Console.WriteLine("create task in test1");            return Task.Run(() =>            {                Thread.Sleep(3000);                Console.WriteLine("Test1");            });        }

執行結果:

對結果解釋是:

  Main方法調用具有async標示的Test方法,Test方法通過await調用Test1方法,當執行順序執行到Test1時,遇到里面的異步操作;則Test方法會等待Test1里面的異步操作執行完再往下執行;但是Main方法,不用再等待Test方法執行,可以繼續往下執行。


對于上面情況,可以不使用async和await也能實現,代碼如下:

        static void Main(string[] args)        {            Test();            Console.WriteLine("Test End!");            Console.ReadLine();        }        static void Test()        {            var test1=Test1();            Task.Run(() =>            {                test1.Wait();                Console.WriteLine("Test1 End!");            });        }        static Task Test1()        {            Thread.Sleep(1000);            Console.WriteLine("create task in test1");            return Task.Run(() =>            {                Thread.Sleep(3000);                Console.WriteLine("Test1");            });        }


最后:這是我個人的理解和總結,歡迎大家來討論或指教


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳信县| 车险| 洪湖市| 陆良县| 色达县| 鲁甸县| 乌审旗| 江北区| 靖边县| 章丘市| 中方县| 旬邑县| 甘肃省| 新余市| 永安市| 宝坻区| 尖扎县| 绥滨县| 三亚市| 惠水县| 县级市| 铜川市| 静宁县| 日照市| 泸水县| 金湖县| 荆州市| 珲春市| 海宁市| 原阳县| 威远县| 灵寿县| 景东| 昌平区| 铜川市| 神池县| 宜春市| 聂荣县| 都匀市| 常宁市| 正安县|