私は完全に非同期のAPIクライアントを使用しています。つまり、各操作は次のいずれかを返しTask
ますTask<T>
。
static async Task DoSomething(int siteId, int postId, IBlogClient client)
{
await client.DeletePost(siteId, postId); // call API client
Console.WriteLine("Deleted post {0}.", siteId);
}
C#5 async / await演算子を使用して、複数のタスクを開始し、それらがすべて完了するのを待つ正しい/最も効率的な方法は何ですか?
int[] ids = new[] { 1, 2, 3, 4, 5 };
Parallel.ForEach(ids, i => DoSomething(1, i, blogClient).Wait());
また:
int[] ids = new[] { 1, 2, 3, 4, 5 };
Task.WaitAll(ids.Select(i => DoSomething(1, i, blogClient)).ToArray());
APIクライアントは内部でHttpClientを使用しているため、これにより5つのHTTPリクエストがすぐに発行され、それぞれが完了するたびにコンソールに書き込まれると思います。