在 C# 中将 Async 与 ForEach 结合使用
将 ForEach 方法用于异步操作时,了解其局限性非常重要。在您的代码中:
db.Groups.ToList().ForEach(i => async { await GetAdminsFromGroup(i.Gid); });
您遇到的编译器错误“当前上下文中不存在名称‘Async’”,表示您不能直接在非异步 lambda 表达式中使用 async。
解决方案:
要解决此问题,请将每个元素投影到异步操作中并等待全部完成:
using (DataContext db = new DataLayer.DataContext()) { var tasks = db.Groups.ToList().Select(i => GetAdminsFromGroupAsync(i.Gid)); var results = await Task.WhenAll(tasks); }
这种方法的好处:
以上是如何在 C# 中正确使用 Async 和 ForEach?的详细内容。更多信息请关注PHP中文网其他相关文章!