業務需求說明:
現在我需要做早餐,實現烤面包,烤培根,搞點番茄醬,開吃這幾個步驟,烤面包和考培根為了節省時間可以同時操作,然后等這兩個做完在搞點番茄醬就可以開飯了。
異步,多任務怎么實現呢
下面通過使用 async/await、WhenAll、ContinueWith 來講解
class Program { static async Task Main(string[] args) { Console.WriteLine("開始做早餐--------"); //烤面包 Task toast = Toast(); //烤培根 Task bakedBacon = BakedBacon(); //等待這兩個任務完成之后搞點番茄醬就可以開吃了。 await Task.WhenAll(toast, bakedBacon).ContinueWith(async (t) => { await AddSauce(); Console.WriteLine("開吃"); }); } }
烤面包異步方法
/// <summary> /// 開始烤面包 /// </summary> /// <returns></returns> public static async Task Toast() { await Task.Run(async () => { Console.WriteLine("正在烤面包!"); await Task.Delay(4000); Console.WriteLine("結束烤面包!"); }); }
烤培根異步方法
/// <summary> /// 烤培根 /// </summary> /// <returns></returns> public static async Task BakedBacon() { await Task.Run(async () => { Console.WriteLine("正在烤培根!"); await Task.Delay(2000); Console.WriteLine("結束烤培根!"); }); }
搞點番茄醬異步方法
/// <summary> /// 番茄醬 /// </summary> /// <returns></returns> public static async Task AddSauce() { await Task.Run(async () => { Console.WriteLine("來點番茄醬!"); await Task.Delay(1000); Console.WriteLine("番茄醬搞定!"); }); }
運行結果:

