.NET 4.5 では、長時間実行される同時タスクを管理する際に課題が生じます。 Task.Run()
は基本的なアプローチを提供しますが、非同期機能を完全に活用する効率性と優雅さに欠けています。
優れたソリューションは、async
/await
を利用して真の非同期 Sleep
メソッドを作成し、中断と効率的な再開を可能にします。 Task.WhenAll()
は複数のタスクの完了を同時に待機します。
改良されたコード例:
<code class="language-csharp">public static async Task Go() { Console.WriteLine("Initiating tasks"); Task<int> task1 = SleepAsync(5000); Task<int> task2 = SleepAsync(3000); await Task.WhenAll(task1, task2); int totalSleepTime = task1.Result + task2.Result; Console.WriteLine($"Total sleep time: {totalSleepTime} ms"); } private static async Task<int> SleepAsync(int ms) { Console.WriteLine($"Sleeping for {ms} ms"); await Task.Delay(ms); Console.WriteLine($"Sleep of {ms} ms COMPLETE"); return ms; }</code>
この拡張コードは、async
内のノンブロッキング遅延に Task.Delay()
と SleepAsync
を使用します。 Go
は、Task.WhenAll()
を介して両方のタスクを同時に開始し、並列実行を可能にします。 結果には、完了時に Result
プロパティを使用してアクセスします。
以上が.NET 4.5 を使用して複数の非同期タスクを効率的に並行して実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。