首頁 > 後端開發 > C++ > 如何在 C# 的 ForEach 迴圈中正確使用非同步操作?

如何在 C# 的 ForEach 迴圈中正確使用非同步操作?

DDD
發布: 2025-01-05 16:58:40
原創
136 人瀏覽過

How to Properly Use Async Operations within a ForEach Loop in C#?

在ForEach 中使用非同步

嘗試在ForEach 循環中使用非同步操作時,可能會遇到類似以下錯誤的問題「當前上下文中不存在名稱'Async'。

要解決此問題,建議將清單的每個元素投影到非同步操作中。這可以透過使用 Select 方法建立任務集合來實現,每個任務代表與清單中的一個元素相對應的非同步操作。

using (DataContext db = new DataLayer.DataContext())
{
    var tasks = db.Groups.ToList().Select(i => GetAdminsFromGroupAsync(i.Gid));
    var results = await Task.WhenAll(tasks);
}
登入後複製

這個方法有幾個優點:

  • 正確的錯誤處理:非同步操作的異常無法用 try/catch 區塊捕捉。使用 Task.WhenAll 可確保傳播異常,從而實現自然的異常處理。
  • 完成追蹤: 透過等待 Task.WhenAll,程式碼確定所有非同步操作已完成。當將 async void delegate 與 ForEach 一起使用時,這些知識並不容易獲得。
  • 直覺語法: 檢索結果的語法更加直觀,因為 GetAdminsFromGroupAsync 暗示了一個傳回值,允許更自然的程式風格。

以上是如何在 C# 的 ForEach 迴圈中正確使用非同步操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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