zoukankan      html  css  js  c++  java
  • 关于 async 与 await的个人理解

    async  与 await是一种能够快速编写异步程序的方式

    async为方法的修饰符,表示该类可以进行异步操作,await只能存在于异步方法中

     1      static void Main(string[] args)
     2         {
     3             Console.WriteLine("-------主线程启动-------");
     4             var m = GetLengthAsync();
     5             Console.WriteLine("Main方法做其他事情");
     6             //var m = task.Result;
     7            // m.Wait();
     8             Console.WriteLine("Main方法做其他事情2");
     9             Console.WriteLine("Task返回的值");
    10             Thread.Sleep(4000);
    11             Console.WriteLine("-------主线程结束-------");
    12             Console.ReadKey();
    13         }
    14         static async Task GetLengthAsync()
    15         {
    16             Console.WriteLine("GetLengthAsync Start");
    17             await GetStringAsync();
    18             Thread.Sleep(3000);
    19             Console.WriteLine("GetLengthAsync End");
    20            // m.Wait();
    21 
    22             //return str.Length;
    23         }
    24 
    25         static Task GetStringAsync()
    26         {
    27             return Task.Run(() => { Thread.Sleep(2000); Console.WriteLine("haha"); });
    28         }

    一开始按照同步的方式进行,进如getlengthAsync方法,进行到await修饰符的方法时,后面的方法与主线程异步进行 5行开始进行  当17完成时,继续进行18、19的操作与主线程异步进行 11停留4秒 19总共停留5秒,因此19约比11晚1秒出现

    既 异步方法中遇到await关键字时,await后面所有的都以异步的形式进行下去

  • 相关阅读:
    P3932 浮游大陆的68号岛
    P4595 [COCI2011-2012#5] POPLOCAVANJE
    CF455E Function
    【转载】乱堆的东西
    BZOJ1034 [ZJOI2008]泡泡堂BNB[贪心]
    CSP2019退役记
    BZOJ5206 [Jsoi2017]原力[根号分治]
    luogu3651 展翅翱翔之时 (はばたきのとき)[基环树+贪心]
    BZOJ1040 [ZJOI2008]骑士[基环树DP]
    BZOJ3037 创世纪[基环树DP]
  • 原文地址:https://www.cnblogs.com/guofu/p/5262696.html
Copyright © 2011-2022 走看看