麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

小結(jié):Async&Await

2019-11-14 16:03:41
字體:
供稿:網(wǎng)友

新項(xiàng)目組用到Async & Await, 關(guān)于Await會(huì)不會(huì)新開不開線程,遇到什么情況會(huì)新開線程的問題網(wǎng)上查了很多資料都沒看到直觀的解釋?,F(xiàn)簡單總結(jié)一下。

直接上代碼:

 

namespace Consoleapplication2{    class PRogram    {        static void Main(string[] args)        {            Test();             Console.WriteLine("Current Thread Id1 :{0}", Thread.CurrentThread.ManagedThreadId);            Console.ReadKey();        }        static async Task Test()        {            await Task.Run(new Action(GetName));   //Await 在這里必須搭配Task的新開線程方法使用,并且表示從這一行開始的剩余code在新線程中執(zhí)行,并告訴Main線程繼續(xù)往下執(zhí)行。            Console.WriteLine("Current Thread Id2 :{0}", Thread.CurrentThread.ManagedThreadId);                               }        public static void GetName()        {            for(int i=0; i<1000000000;i++)            {                int a = 15*15*15*15*15*15;            }                          Console.WriteLine("Current Thread Id3 :{0}", Thread.CurrentThread.ManagedThreadId);        }       }}

  

結(jié)果如下

Current Thread Id1 :9  

Current Thread Id3 :10

Current Thread Id2 :10

 

 

為了驗(yàn)證await是不是遇到新開啟線程的方法才會(huì)觸發(fā)他的作用,做如下更改。

namespace ConsoleApplication2{    class Program    {        static void Main(string[] args)        {            Test();             Console.WriteLine("Current Thread Id1 :{0}", Thread.CurrentThread.ManagedThreadId);            Console.ReadKey();        }        static async Task Test()        {            await GetName();            Console.WriteLine("Current Thread Id2 :{0}", Thread.CurrentThread.ManagedThreadId);                               }        public static async Task GetName()        {            for(int i=0; i<1000000000;i++)            {                int a = 15*15*15*15*15*15;            }             await Task.Delay(10000);             Console.WriteLine("Current Thread Id3 :{0}", Thread.CurrentThread.ManagedThreadId);        }       }}

  

發(fā)現(xiàn)Main線程會(huì)等待GetName里的復(fù)雜運(yùn)算結(jié)束后,知道Task.Delay才會(huì)繼續(xù)執(zhí)行Main線程,猜測正確。

 

 

補(bǔ)充一句,在第一段code中,如果在Test方法中的 await Task.Run(new Action(GetName));  沒有await, 代碼跑到這里開啟線程的同時(shí)Main線程會(huì)繼續(xù)往下之前,因此await是包含了本行及以下的所有代碼在新線程中執(zhí)行,但僅限本方法及本方法調(diào)用的方法,不會(huì)進(jìn)入上級(jí)方法。

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩黄色片免费看 | 午夜精品一区二区三区免费 | 欧美日韩亚洲一区二区三区 | 97黄色网| 亚洲成人第一区 | 高潮激情aaaaa免费看 | 国产一区二区三区在线观看视频 | 精品国产91久久久久久久妲己 | 精品国产一区二区三区久久久 | 中文字幕激情 | 精品国产一区二区三区四区在线 | 国产精品一区99 | 91av国产在线| 中国洗澡偷拍在线播放 | 中文字幕国产一区 | 色综合视频网 | 九九热在线免费观看视频 | 综合在线视频 | 成人毛片免费视频 | 91精品国产777在线观看 | 少妇一级淫片高潮流水电影 | 欧美大屁股精品毛片视频 | 黄色成人小视频 | 法国极品成人h版 | 黄网站在线免费看 | 91麻豆精品国产91久久久点播时间 | 一级片a | 免费国产一区二区视频 | 午夜视频在线 | 精品国产一区二区亚洲人成毛片 | 国产人妖一区二区 | 国产精品视频在 | 久久精品日产第一区二区三区 | 国产一区免费观看 | 欧美大屁股精品毛片视频 | 99激情视频| 一起草av在线 | 91av大片 | www久久综合| 在线香蕉视频 | 黄污网站在线 |