Usando async / wait para várias tarefas
Estou usando um cliente API completamente assíncrono, ou seja, cada operação retornaTask
ouTask<T>
, por exemplo:
static async Task DoSomething(int siteId, int postId, IBlogClient client)
{
await client.DeletePost(siteId, postId); // call API client
Console.WriteLine("Deleted post {0}.", siteId);
}
Usando os operadores async / wait do C # 5, qual é a maneira correta / mais eficiente de iniciar várias tarefas e esperar que todas sejam concluídas:
int[] ids = new[] { 1, 2, 3, 4, 5 };
Parallel.ForEach(ids, i => DoSomething(1, i, blogClient).Wait());
ou:
int[] ids = new[] { 1, 2, 3, 4, 5 };
Task.WaitAll(ids.Select(i => DoSomething(1, i, blogClient)).ToArray());
Como o cliente da API está usando HttpClient internamente, eu esperaria que isso emitisse 5 solicitações HTTP imediatamente, gravando no console à medida que cada um fosse concluído.