在 .NET 4.5 中高效執行並發非同步任務並檢索結果
本指南示範了一種在 .NET 4.5 框架內同時執行兩個非同步任務並有效收集各自結果的簡化方法。 以前使用 Task.Run()
和 Thread.Sleep()
的方法對於非同步操作來說不太理想。
這是一個改進的解決方案:
<code class="language-csharp">async Task<int> LongTask1() { // Simulate a long-running operation await Task.Delay(1000); // Replace with your actual asynchronous task return 0; } async Task<int> LongTask2() { // Simulate a long-running operation await Task.Delay(1500); // Replace with your actual asynchronous task return 1; } // ... within your main method ... { Task<int> task1 = LongTask1(); Task<int> task2 = LongTask2(); await Task.WhenAll(task1, task2); // Access results after both tasks have completed int result1 = task1.Result; int result2 = task2.Result; // ... process result1 and result2 ... }</code>
這段精煉的程式碼利用了async
/await
的力量:
LongTask1
和 LongTask2
是代表長時間運作操作的非同步方法。 請記得將 Task.Delay()
替換為您實際的非同步邏輯。 Task.WhenAll(task1, task2)
確保兩項任務在繼續之前完成,有效同步結果。 task1.Result
和 task2.Result
提供對每個任務執行完成後的回傳值的存取。 與先前的方法相比,這種方法提供了更乾淨、更有效率、真正非同步的解決方案,消除了對 Task.Run()
和像 Thread.Sleep()
這樣低效的阻塞呼叫的需要。 這是在 .NET 4.5 中處理並發非同步任務的建議方法。
以上是如何在 .NET 4.5 中同時執行兩個非同步任務並取得其結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!