async & await
class Program { static void Main(string[] args) { //进入主线程开始执行 Console.WriteLine("Main Thread Id:{0}\r\n",Thread.CurrentThread.ManagedThreadId);//1 Test();//调用async方法 Console.ReadLine(); } static async Task Test() { Console.WriteLine("Before calling GetName,Thread Id:{0}\r\n",Thread.CurrentThread.ManagedThreadId);//依然是主线程2 var name = GetName();//没有使用await关键字,所以主线程继续执行 Console.WriteLine("End calling GetName.\r\n");//主线程输出4 Console.WriteLine("Get result from GetName:{0}",await name);//使用await关键字,GetName执行,后面的代码会被挂起(这里是主线程被挂起),直到GetName执行完毕,才执行7 Console.WriteLine("添加await关键字");//7 } static async Task<string> GetName() { Console.WriteLine("Before calling Task.Run,current thread Id is:{0}", Thread.CurrentThread.ManagedThreadId);//主线程输出3 return await Task.Run(() => {//返回一个Task Thread.Sleep(1000); Console.WriteLine("'GetName' Thread Id:{0}",Thread.CurrentThread.ManagedThreadId);//5 return "wjl";//6 }); } }

http://www.cnblogs.com/jesse2013/p/async-and-await.html

浙公网安备 33010602011771号