要理解async和await的用法,首先要了解Task相关知识,这里不作说明,由于这不是本文的重点。异步
若是你已经对Task很了解,那么如何使用async和await,在此主要总结了如下三点:async
对于第三点说的有点绕,因此下面结合代码说一下:spa
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"); }); }
执行结果:code
对结果解释是:对象
Main方法调用具备async标示的Test方法,Test方法经过await调用Test1方法,当执行顺序执行到Test1时,遇到里面的异步操做;则Test方法会等待Test1里面的异步操做执行完再往下执行;可是Main方法,不用再等待Test方法执行,能够继续往下执行。blog
对于上面状况,能够不使用async和await也能实现,代码以下:string
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"); }); }
最后:这是我我的的理解和总结,欢迎你们来讨论或指教it