ホームページ > バックエンド開発 > C++ > C# で ForEach で Async を正しく使用する方法?

C# で ForEach で Async を正しく使用する方法?

Linda Hamilton
リリース: 2025-01-05 03:05:40
オリジナル
706 人が閲覧しました

How to Correctly Use Async with ForEach in C#?

C# での ForEach での Async の使用

非同期操作で ForEach メソッドを使用する場合は、その制限を理解することが重要です。コード内:

db.Groups.ToList().ForEach(i => async {
    await GetAdminsFromGroup(i.Gid);
});
ログイン後にコピー

発生したコンパイラ エラー「現在のコンテキストには名前 'Async' が存在しません」は、非同期ラムダ式内で 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 はキャッチできませんが、このアプローチでは await Task.WhenAll 行でそれらを伝播し、自然な処理を可能にします。例外処理。
  • 完了追跡: このアプローチは、非同期 void とは異なり、操作がいつ完了するかを明確に示します。そのため、この区別を追跡することが困難です。
  • Natural構文: GetAdminsFromGroupAsync は、操作が結果を返すことを暗黙的に示し、コードをより直感的かつわかりやすくします。保守可能。

以上がC# で ForEach で Async を正しく使用する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート