问题:
在 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中文网其他相关文章!