問題:
在 ForEach 上下文中使用非同步功能是否可行?下面提供了描述嘗試實現的程式碼片段:
using (DataContext db = new DataLayer.DataContext()) { db.Groups.ToList().ForEach(i => async { await GetAdminsFromGroup(i.Gid); }); }
但是,在執行時,出現以下錯誤:
The name 'Async' does not exist in the current context
注意,封裝using 語句的方法已被指定為
答案:
List
對於這種特定場景,建議採用替代方法。這涉及將每個元素投影到非同步操作中。隨後,可以非同步等待這些操作的完成。
using (DataContext db = new DataLayer.DataContext()) { var tasks = db.Groups.ToList().Select(i => GetAdminsFromGroupAsync(i.Gid)); var results = await Task.WhenAll(tasks); }
與使用ForEach 的非同步委託相比,此方法具有多個優勢:
以上是非同步操作可以與 ForEach 一起使用嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!