async/await 異步關鍵字異步
/// <summary> /// 無參無反 /// </summary> /// <returns></returns> public async static Task ShowAsync() { await Task.Run(() => { Thread.Sleep(2000); Console.WriteLine($"線程等待後執行:{Thread.CurrentThread.ManagedThreadId}"); }); }
/// <summary> /// 無參有反返回一個時間 /// </summary> /// <returns></returns> public static async Task<DateTime> TaskAsync() { var data = await Task.Run(() => { Thread.Sleep(2000); Console.WriteLine($"線程等待後執行:{Thread.CurrentThread.ManagedThreadId}"); return DateTime.Now; }); return data; }
//測試調用 static void Main(string[] args) { //Test.Show(); Console.WriteLine("線程開始執行"); Test.ShowAsync(); Console.WriteLine("線程開始執行"); var data = Test.TaskAsync(); data.Wait(); Console.WriteLine($"線程等待執行是否繼續 結果{data.Result.Date}"); Console.WriteLine("線程開始執行"); Console.Read(); }
運行結果async
線程開始執行
線程開始執行
線程等待後執行:3
線程等待後執行:4
線程等待執行是否繼續 結果2019/7/7 0:00:00
線程開始執行測試