Usando async / await para múltiples tareas
Estoy usando un cliente API que es completamente asíncrono, es decir, cada operación devuelveTask
oTask<T>
, p.ej:
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 los operadores asíncronos / a la espera de C # 5, ¿cuál es la forma correcta / más eficiente de iniciar múltiples tareas y esperar a que todas se completen:
int[] ids = new[] { 1, 2, 3, 4, 5 };
Parallel.ForEach(ids, i => DoSomething(1, i, blogClient).Wait());
o:
int[] ids = new[] { 1, 2, 3, 4, 5 };
Task.WaitAll(ids.Select(i => DoSomething(1, i, blogClient)).ToArray());
Dado que el cliente API está utilizando HttpClient internamente, esperaría que esto emitiera 5 solicitudes HTTP inmediatamente, escribiendo en la consola a medida que se completa cada una.