关于 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后面所有的都以异步的形式进行下去

原文地址:https://www.cnblogs.com/guofu/p/5262696.html