.NET 4.5 での並列非同期操作の最適化
.NET 4.5 は、複数の時間のかかるタスクを同時に実行するための堅牢な非同期プログラミング機能を提供します。 ただし、一部の初期実装は過度に複雑に見え、非同期手法に固有の優雅さが欠けている場合があります。 この改良された例では、これらの欠点が解決されています。
強化されたコード構造
次の洗練されたコードは、より効率的で合理化されたアプローチを提供します。
<code class="language-csharp">async Task GoAsync() { 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 async Task<int> SleepAsync(int milliseconds) { Console.WriteLine($"Sleeping for {milliseconds} ms"); try { await Task.Delay(milliseconds); return milliseconds; } finally { Console.WriteLine($"Sleep for {milliseconds} ms COMPLETE"); } }</code>
主な改善点:
GoAsync
は非同期メソッド (async Task
) になり、await
を使用してタスクの完了を管理できるようになります。SleepAsync
は、Task<int>
を返す非同期メソッドであり、操作の非同期の性質を反映しています。Task.WhenAll
は両方のタスクの完了を同時に効率的に待機するため、明示的な .Result
アクセスの必要性がなくなり、パフォーマンスが向上します。機能コード:
この改訂されたコードは両方のタスクを同時に実行し、結果を効果的に収集します。 この方法は、.NET 4.5 内での並列非同期タスク実行のための、よりクリーンで、より簡潔で、効率的なソリューションを提供します。
以上が.NET 4.5 で並列非同期タスクを効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。