.NET Framework 4を使用している場合は、タスク並列ライブラリを使用してこれを実現できます。さまざまなサーバーを呼び出す必要があるメソッドであると仮定するGetDataFromServer
と、次のロジックのようなロジックを実行して、すべてのサーバーからデータを取得できます。
var d1 = Task.Factory.StartNew(() => GetDataFromServer("server1"));
var d2 = Task.Factory.StartNew(() => GetDataFromServer("server2"));
var d3 = Task.Factory.StartNew(() => GetDataFromServer("server3"));
var d4 = Task.Factory.StartNew(() => GetDataFromServer("server4"));
TaskCoordinator.WhenAll(new Task[] {d1, d2, d3, d4});
上記の手順では、4つのメソッドすべてを非同期で呼び出します。それらすべてが完了するのを待ちます。各操作の結果は、対応するオブジェクトResult
のプロパティに格納されます。Task
したがって、d1.Result、d2.Resultなどを使用して結果を取得し、メソッド呼び出しから取得した結果に対してロジックを実行できます。