.NET 4.5 での同時非同期タスクの効率的な実行と結果の取得
このガイドでは、.NET 4.5 フレームワーク内で 2 つの非同期タスクを同時に実行し、それぞれの結果を効率的に収集するための合理化された方法を示します。 Task.Run()
と Thread.Sleep()
を使用した以前のアプローチは、非同期操作には理想的ではありません。
改善されたソリューションは次のとおりです:
<code class="language-csharp">async Task<int> LongTask1() { // Simulate a long-running operation await Task.Delay(1000); // Replace with your actual asynchronous task return 0; } async Task<int> LongTask2() { // Simulate a long-running operation await Task.Delay(1500); // Replace with your actual asynchronous task return 1; } // ... within your main method ... { Task<int> task1 = LongTask1(); Task<int> task2 = LongTask2(); await Task.WhenAll(task1, task2); // Access results after both tasks have completed int result1 = task1.Result; int result2 = task2.Result; // ... process result1 and result2 ... }</code>
この洗練されたコードは、async
/await
の機能を活用しています:
LongTask1
と LongTask2
は、長時間実行される操作を表す非同期メソッドです。 Task.Delay()
を実際の非同期ロジックに置き換えることを忘れないでください。Task.WhenAll(task1, task2)
は、続行する前に両方のタスクが完了していることを確認し、結果を効果的に同期します。task1.Result
と task2.Result
は、各タスクの実行終了後に返された値へのアクセスを提供します。このアプローチは、以前の方法と比較して、よりクリーンで効率的で真の非同期ソリューションを提供し、Task.Run()
や Thread.Sleep()
のような非効率的なブロック呼び出しの必要性を排除します。 これは、.NET 4.5 で同時非同期タスクを処理するための推奨される方法です。
以上が.NET 4.5 で 2 つの非同期タスクを同時に実行し、その結果を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。