Laden...

Nach asnychronem Konvertieren via LINQ - WIe warte ich auf das Ergebnis statt dem Task als Rückgabe?

Erstellt von R3turnz vor 7 Jahren Letzter Beitrag vor 7 Jahren 921 Views
R
R3turnz Themenstarter:in
125 Beiträge seit 2016
vor 7 Jahren
Nach asnychronem Konvertieren via LINQ - WIe warte ich auf das Ergebnis statt dem Task als Rückgabe?

Hallo,
Ich versuche eine Liste von Objekten mit einer asynchronen Operation zu konvertieren:


                Forecast = WeatherParser.ParseForecast(forecastResponse.Item2, Settings.TempUnit).Select(async (forecastAtDay) =>
                 {
                     var forecastIcon = await weatherQuery.TryGetIconAsync(forecastAtDay.IconIdentifier);
                     return new WeatherIconWrapper(forecastAtDay, forecastIcon.Item1 ? LoadImage(forecastIcon.Item2) : null);
                 }
                );

Hier wird statt der Liste von Objekten, jedoch eine von Tasks zurückgegeben. Wie kann ich auf diese "warten"?

2.080 Beiträge seit 2012
vor 7 Jahren

Schau dir mal folgende Methoden an:

Task.WaitAll
Task.WaitAny
Sie warten synchron, bie ein/alle Task/s abgeschlossen ist/sind.

Task.WhenAny
Task.WhenAll
Sie erzeugen einen Task, der abgeschlossen ist, wenn ein/alle Task/s abgeschlossen ist/sind.
Auf diesen Task kannst Du dann mit await warten.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.