高效並發非同步任務執行與同步:Task.WhenAll詳解
在C#控制台應用程式中處理非同步任務時,協調任務執行和等待其完成可能是一項挑戰。本文將提供一個簡單的實作方案,用於並發運行多個非同步任務並同步其完成。
傳統方法使用Task.WaitAll
之類的阻塞方法來等待所有任務完成。然而,這種方法會阻塞執行線程,效率低。為了尋求更最佳化的解決方案,讓我們探討Task.WhenAll
方法。
Task.WhenAll方法
Task.WhenAll
是一個可等待的方法,它接受一個任務數組作為參數。與Task.WaitAll
不同,它不會阻塞執行緒。相反,它會傳回一個新的任務,該任務表示所有輸入任務的組合結果。
實作範例
以下是如何使用Task.WhenAll
運行和同步多個非同步任務的範例:
<code class="language-csharp">var task1 = DoWorkAsync(); var task2 = DoMoreWorkAsync(); await Task.WhenAll(task1, task2);</code>
在此程式碼中,DoWorkAsync
和DoMoreWorkAsync
是表示您的任務的非同步方法。 Task.WhenAll
建立一個新的任務,只有當兩個輸入任務都完成後,該任務才會完成。透過等待此組合任務,執行緒將在所有輸入任務完成後恢復。
異常處理
與Task.WaitAll
相比,Task.WhenAll
提供了更細緻的異常處理。如果任何輸入任務發生故障,則傳回的任務也會發生故障,並聚合來自故障任務的異常。如果所有任務都成功完成,則傳回的任務將處於RanToCompletion
狀態。
以上是任務如何改善C#中的並發異步任務執行和同步?的詳細內容。更多資訊請關注PHP中文網其他相關文章!