.NET 4.5中並行執行非同步任務並收集結果
引言:
同時執行長時間運行的任務並收集其結果是.NET應用程式中的常見需求。在.NET 4.5中,隨著非同步程式設計的引入,傳統的基於執行緒的方法已經發展起來。本文探討在.NET 4.5中實現非同步任務並行執行的最佳方法。
原始碼:
提供的程式碼示範了使用Task.Run()啟動兩個長時間運行的任務,然後使用Result檢索其結果的基本方法。但是,此方法有一些限制:
無效碼:
透過呼叫非同步方法來建立非運行Task
最佳解:
最佳解決方案包括使用長時間運行任務的非同步版本並利用Task.WhenAll()方法。範例如下:
<code class="language-csharp">async Task<int> LongTask1() { // ...长时间运行的任务1... return 0; } async Task<int> LongTask2() { // ...长时间运行的任务2... return 1; } // ... { Task<int> t1 = LongTask1(); Task<int> t2 = LongTask2(); await Task.WhenAll(t1,t2); //现在我们可以访问t1.Result和t2.Result }</code>
此程式碼為LongTask1和LongTask2建立非同步任務,然後使用Task.WhenAll()等待它們完成。這允許任務並發運行而不會阻塞。最後,可以使用t1.Result和t2.Result存取結果。
以上是如何在 .NET 4.5 中高效運行並行非同步任務並收集結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!