Verwenden von async / await für mehrere Aufgaben

Ich verwende einen API-Client, der vollständig asynchron ist, das heißt, jede Operation gibt entweder zurückTask oderTask<T>, z.B:

static async Task DoSomething(int siteId, int postId, IBlogClient client)
{
    await client.DeletePost(siteId, postId); // call API client
    Console.WriteLine("Deleted post {0}.", siteId);
}

Was ist die richtige / effizienteste Methode, um mit den C # 5-Operatoren für asynchrone / erwartete Aufgaben mehrere Aufgaben zu starten und auf deren Abschluss zu warten:

int[] ids = new[] { 1, 2, 3, 4, 5 };
Parallel.ForEach(ids, i => DoSomething(1, i, blogClient).Wait());

oder:

int[] ids = new[] { 1, 2, 3, 4, 5 };
Task.WaitAll(ids.Select(i => DoSomething(1, i, blogClient)).ToArray());

Da der API-Client HttpClient intern verwendet, würde ich davon ausgehen, dass dies sofort 5 HTTP-Anforderungen ausgibt, die nach Abschluss jeder Anforderung an die Konsole geschrieben werden.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage