Ich verwende einen API-Client, der vollständig asynchron ist, d. h., jeder Vorgang gibt entweder Task
oder Task<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);
}
Mit der C# 5 async/await-Operatoren, was ist der richtige/effizienteste Weg, um mehrere Aufgaben zu starten und warten, bis sie alle zu beenden:
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 intern HttpClient verwendet, würde ich erwarten, dass dies 5 HTTP-Anforderungen sofort ausgeben und in die Konsole schreiben, wie jeder abgeschlossen ist.