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

 

posted @ 2016-06-29 09:11  wjl910  阅读(107)  评论(0)    收藏  举报