ホームページ > バックエンド開発 > C++ > C# で複数の非同期タスクを効率的に実行するにはどうすればよいですか?

C# で複数の非同期タスクを効率的に実行するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-22 03:17:09
オリジナル
438 人が閲覧しました

How to Efficiently Execute Multiple Asynchronous Tasks in C#?

C# で複数の非同期タスクを効率的に実行する

非同期コードを扱う場合、複数のタスクを同時に実行する最も効率的な方法を選択することが重要です。この記事では、これを実現する 2 つの一般的な方法、Parallel.ForEachWait() および Task.WaitAll() の組み合わせについて説明します。

Parallel.ForEach と Wait() を使用する

Parallel.ForEach()Wait() を組み合わせると、複数のタスクを並行して開始できますが、タスクが完了するまで参加している各スレッドはブロックされます。このアプローチは、各スレッドが長時間アイドル状態になるため、ネットワーク操作に長時間かかる場合には非効率的です。

Task.WaitAll() を使用する

Task.WaitAll() も、すべてのタスクが完了するまで現在のスレッドをブロックします。このメソッドでは、続行する前にすべてのタスクが確実に完了しますが、現在のスレッドが他の作業を実行できなくなります。

推奨メソッド: Task.WhenAll()

複数の非同期タスクを効率的に実行するには、Task.WhenAll()を使用することをお勧めします。このメソッドは、スレッドをブロックせずにタスクを同時に開始します。タスクが完了すると、タスクは自動的に待機し、現在のスレッドが処理を続行できるようになります。

以下は Task.WhenAll() の使用例です:

<code class="language-csharp">public async Task DoWork()
{
    int[] ids = new[] { 1, 2, 3, 4, 5 };
    await Task.WhenAll(ids.Select(i => DoSomething(1, i, blogClient)));
}</code>
ログイン後にコピー

Task.WhenAll() を使用すると、上記のメソッドは現在のスレッドをブロックすることなく、すべてのタスクを非同期的に実行します。パフォーマンスをさらに最適化するために、後続の操作がない場合は、await の使用を避け、メソッドから直接戻ることができます。

その他のリソース

これらの代替手段の詳細については、次のブログ投稿を参照してください:

  • 同時非同期 I/O に ASP.NET Web API を使用する方法と場所

以上がC# で複数の非同期タスクを効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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