C#異步中的Task,async,await
阿新 • • 發佈:2017-11-22
string con get 結果 brush 異步回調 pre result ring
class Program { static void Main(string[] args) { Console.WriteLine("我是主線程,線程ID:{0}", Thread.CurrentThread.ManagedThreadId); TestAsync(); Console.ReadLine(); } static async void TestAsync() { Console.WriteLine("調用GetReturnResult()之前,線程ID:{0}。當前時間:{1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss")); var name = GetReturnResult(); Console.WriteLine("調用GetReturnResult()之後,線程ID:{0}。當前時間:{1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss")); //異步回調內容 //在await以及之後的代碼都會阻塞 Console.WriteLine("得到GetReturnResult()方法的結果:{0}。當前時間:{1}", await name, DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss")); Console.WriteLine("await之後的內容。當前時間:{0}", DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss")); //異步回調內容 } static async Task<string> GetReturnResult() { Console.WriteLine("執行Task.Run之前, 線程ID:{0}", Thread.CurrentThread.ManagedThreadId); return await Task.Run(() => { Thread.Sleep(5000); Console.WriteLine("GetReturnResult()方法裏面線程ID: {0}", Thread.CurrentThread.ManagedThreadId); return "我是返回值"; }); } }
C#異步中的Task,async,await