Использование async / await для нескольких задач

Я использую клиент 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, каков правильный / наиболее эффективный способ запуска нескольких задач и ожидания их выполнения:

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-запросов, записывая их на консоль по завершении каждого из них.

Ответы на вопрос(4)

Ваш ответ на вопрос