示例代碼:
private void button16_Click(object sender, EventArgs e) { Console.WriteLine("按鈕開始" + Thread.CurrentThread.ManagedThreadId.ToString()); task1(); Console.WriteLine("按鈕結束" + Thread.CurrentThread.ManagedThreadId.ToString()); } static async Task task1() { Console.WriteLine("task1開始" + Thread.CurrentThread.ManagedThreadId.ToString()); Thread.Sleep(5); task2(); Console.WriteLine("task1結束" + Thread.CurrentThread.ManagedThreadId.ToString()); } static async Task<string> task2() { Console.WriteLine("task2開始" + Thread.CurrentThread.ManagedThreadId.ToString()); Thread.Sleep(5); await Task.Run(() => { Thread.Sleep(10); Console.WriteLine("xxxxxxxxxxxxxxxx" + Thread.CurrentThread.ManagedThreadId.ToString()); }); Console.WriteLine("task2結束" + Thread.CurrentThread.ManagedThreadId.ToString()); return "ddd"; }
async修飾的函數,在被調用時都會開個線程執行,如果加了await當前線程就會等待task2執行完後在往下執行,不加的話,就會併發一起執行。