.NET 4.5 在管理並發、長時間運行的任務時面臨挑戰。 雖然 Task.Run()
提供了一種基本方法,但它缺乏充分利用非同步功能的效率和優雅性。
卓越的解決方案利用 async
/await
創建真正的非同步 Sleep
方法,允許中斷和高效恢復。 Task.WhenAll()
同時等待多個任務的完成。
改進的程式碼範例:
<code class="language-csharp">public static async Task Go() { Console.WriteLine("Initiating tasks"); Task<int> task1 = SleepAsync(5000); Task<int> task2 = SleepAsync(3000); await Task.WhenAll(task1, task2); int totalSleepTime = task1.Result + task2.Result; Console.WriteLine($"Total sleep time: {totalSleepTime} ms"); } private static async Task<int> SleepAsync(int ms) { Console.WriteLine($"Sleeping for {ms} ms"); await Task.Delay(ms); Console.WriteLine($"Sleep of {ms} ms COMPLETE"); return ms; }</code>
此增強型程式碼使用 async
和 Task.Delay()
實作 SleepAsync
內的非阻塞延遲。 Go
透過 Task.WhenAll()
同時啟動兩個任務,從而實現並行執行。 完成後可使用 Result
屬性存取結果。
以上是如何使用 .NET 4.5 有效率地並行執行多個非同步任務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!