最佳化 .NET 4.5 中的平行非同步操作
.NET 4.5 提供了強大的非同步程式設計功能,可以並發執行多個冗長的任務。 然而,一些初始實現可能顯得過於複雜,並且缺乏非同步方法固有的優雅性。 這個改進的範例解決了這些缺點。
增強的程式碼結構
以下精煉程式碼提供了更有效率、簡化的方法:
<code class="language-csharp">async Task GoAsync() { 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 async Task<int> SleepAsync(int milliseconds) { Console.WriteLine($"Sleeping for {milliseconds} ms"); try { await Task.Delay(milliseconds); return milliseconds; } finally { Console.WriteLine($"Sleep for {milliseconds} ms COMPLETE"); } }</code>
主要改善:
GoAsync
現在是非同步方法 (async Task
),允許使用 await
來管理任務完成情況。 SleepAsync
是一個回傳 Task<int>
的非同步方法,反映了操作的非同步性質。 Task.WhenAll
有效地同時等待兩項任務的完成,消除了明確 .Result
存取的需要並提高了效能。 功能代碼:
修改後的程式碼同時執行這兩個任務,有效地收集結果。 此方法為.NET 4.5中並行非同步任務執行提供了更乾淨、更簡潔、更有效率的解決方案。
以上是如何在.NET 4.5中高效運行並行非同步任務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!