ホームページ > バックエンド開発 > C++ > コンソールアプリケーションで複数の非同期タスクを効率的に実行して待つにはどうすればよいですか?

コンソールアプリケーションで複数の非同期タスクを効率的に実行して待つにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-25 13:57:14
オリジナル
146 人が閲覧しました

How Can I Efficiently Execute and Await Multiple Async Tasks in a Console Application?

同時非同期操作の管理と確実な完了

このガイドでは、コンソール アプリケーション内で複数の非同期タスクを同時に実行し、それらが正常に完了したことを確認するための効果的な戦略を示します。

方法 1: Task.WhenAll

を利用する

一部の既存のリソースとは異なり、Task.WhenAll は、複数の非同期操作を同時に実行し、すべての操作が完了するのを待つための簡単なソリューションを提供します。 これがイラストです:

<code class="language-csharp">var task1 = PerformTaskAsync();
var task2 = PerformAnotherTaskAsync();

await Task.WhenAll(task1, task2);</code>
ログイン後にコピー

Task.WhenAll は、すべての入力タスク (この例では task1task2) が完了した場合にのみ完了する待機可能タスクを返します。 これにより、後続のコードはすべての非同期操作が終了した後にのみ実行されるようになります。

Task.WaitAllTask.WhenAll

の比較

Task.WaitAllTask.WhenAll はどちらもタスクの完了を待ちますが、大きく異なります。 Task.WaitAll は現在のスレッドをブロックしますが、Task.WhenAll は非ブロックです。 例外処理も異なります。Task.WaitAll は例外を 1 つの AggregateException に集約しますが、Task.WhenAll は集約された例外を含む Faulted タスクを生成します。

堅牢なエラー処理

Task.WaitAll は、タスクが失敗するかキャンセルされた場合に AggregateException をスローします。 Task.WhenAll は、タスクが失敗した場合は Faulted タスクを返し、タスクが失敗せずにキャンセルされた場合は Canceled タスクを返します。 潜在的なエラーを適切に管理するには、適切な例外処理が不可欠です。

以上がコンソールアプリケーションで複数の非同期タスクを効率的に実行して待つにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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