Ich habe eine asynchrone Methode, die eine List<long>
Komponente IDs für eine Auto-ID erhält. Ich möchte Komponenten-IDs für mehrere hundert Autos asynchron bekommen, also schrieb ich die Methode unten. Mein Ziel ist es, die Ergebnisse aller GetAllComponentIdsForCar
Aufgaben zusammenzufassen und sie von der folgenden Methode zurückzugeben.C# Add-Up-Ergebnisse von Async-Methoden, wenn alle fertig sind
public async Task<List<long>> GetListOfComponentIds(List<long> carIds)
{
List<Task> tasksList = new List<Task>();
foreach (var carId in carIds)
{
Task<List<long>> getComponentIds = GetAllComponentIdsForCar(carId);
tasksList.Add(getComponentIds);
}
await Task.WhenAll(tasksList);
//List<long> sumOfAllTaskResults...or array...or something
}
Wie bewerkstellige ich das?
Hinweis - Ich bin auf der Suche nach etwas ähnlich wie Winkel q.all, die einfach ein Array aller Aufgaben (/ Versprechen) Ergebnisse zurückgibt, wenn Sie fertig sind.
Ich habe es geschafft, Ergebnisse von asynchronen Aufgaben in C# vorher zu bekommen, aber das hat dazu geführt, ein Array die Länge der erwarteten Aufgaben zu machen, und das scheint nur ein schrecklicher Weg, es zu tun.
Ich habe versucht, Microsofts Dokumentation und Fragen hier zu lesen, aber alles, was ich sehe, sind Argumente über WaitAll vs WhenAll.
Edit:
Zunächst einmal vielen Dank für die Antwort, aber es scheint zurück zu fallen (siehe Screenshot in q). – VSO
Das war mein Fehler. Vielen Dank. – VSO