首頁 > 後端開發 > C++ > 任務如何改善C#中的並發異步任務執行和同步?

任務如何改善C#中的並發異步任務執行和同步?

Barbara Streisand
發布: 2025-01-25 14:08:11
原創
194 人瀏覽過

How Can Task.WhenAll Improve Concurrent Asynchronous Task Execution and Synchronization in C#?

高效並發非同步任務執行與同步: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>
登入後複製

在此程式碼中,DoWorkAsyncDoMoreWorkAsync是表示您的任務的非同步方法。 Task.WhenAll建立一個新的任務,只有當兩個輸入任務都完成後,該任務才會完成。透過等待此組合任務,執行緒將在所有輸入任務完成後恢復。

異常處理

Task.WaitAll相比,Task.WhenAll提供了更細緻的異常處理。如果任何輸入任務發生故障,則傳回的任務也會發生故障,並聚合來自故障任務的異常。如果所有任務都成功完成,則傳回的任務將處於RanToCompletion狀態。

以上是任務如何改善C#中的並發異步任務執行和同步?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板