C# async await 測試一
using System.Threading.Tasks; namespace awaitTest2 { internal class Program { static async Task Main(string[] args) { Console.WriteLine("主線程開始!主線程ID:"+Thread.CurrentThread.ManagedThreadId); F1(); // 這里沒有await,F1()會在一個獨立的線程中運行,主線程不會等待它完成 //遇到await時,F1()會將控制權返回給調用它的線程(即主線程) //await F1(); // 這里有await,主線程會等待F1()完成后再繼續執行 Console.WriteLine("主線程結束!"); Console.ReadLine(); // 防止主線程結束,觀察子線程輸出 } public static async Task F1() { Task task = Task.Run(() => { Console.WriteLine("子線程開始:" + Thread.CurrentThread.ManagedThreadId); Thread.Sleep(3000); Console.WriteLine("子線程結束"); }); await task; Console.WriteLine("后續線程:" + Thread.CurrentThread.ManagedThreadId); } } }
通過F1()直接調用的結果:

如果主線程即Main方法中不含Console.ReadLine();那么執行結果如下:主線程不會等到子線程結束就關閉了程序。(前臺線程結束后,所有的后臺線程也會被結束)

通過await F1()調用的結果:


浙公網安備 33010602011771號