Я использую 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);
}
Используя операторы async/wait С# 5, какой правильный/наиболее эффективный способ запускать несколько задач и ждать их завершения:
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-запросов, записывая их на консоль, как только они завершатся.