首页 > 后端开发 > C++ > 如何在 C# 中正确使用 Async 和 ForEach?

如何在 C# 中正确使用 Async 和 ForEach?

Linda Hamilton
发布: 2025-01-05 03:05:40
原创
665 人浏览过

How to Correctly Use Async with ForEach in C#?

在 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);
}
登录后复制

这种方法的好处:

  • 正确的错误处理: async void 的异常不能被捕获,但此方法将它们传播到等待 Task.WhenAll 行,允许自然异常
  • 完成跟踪:这种方法清楚地指示操作何时完成,与 async void 不同,这使得这种区别难以跟踪。
  • 自然语法: GetAdminsFromGroupAsync 暗示操作返回结果,使代码更加直观和可维护。

以上是如何在 C# 中正确使用 Async 和 ForEach?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板