Hallo zusammen,
über Lazy rufe ich eine Liste ab. Da die Liste eventuell Abhängigkeiten unter den einzelnen Items hat muss ich das nachdem sie geladen sind noch einmal durchgehen.
Also muss ich nachdem über Lazy der Werte zugewiesen wurde eine Methode ausführen. Aber eben nur wenn sie das erste Mal zugewiesen wurde.
Ich dachte hier an IsValueCreated.
Aber wie warte ich auf IsValueCreated == true ? Gibt es da ein Event welches ausgelöst wird?
Oder wie würdet ihr das umsetzen?
Vielen Dank schonmal für die Hilfe.
Gruß
Du kannst Lazy<T>
im wesentlichen auf 3 Arten initialisieren:1.per Standard-Konstruktor
1.per direkter Objekt-Übergabe
1.per Aufruf einer Factory-Methode
Die Nutzung ist immer dieselbe: Zugriff auf das Value
Property.
IsValueCreated
gibt nur an, ob Value
bereits einen Wert hat den es direkt zurück liefern kann, oder diesen erst erzeugen muss (zb. per Standard-Konstruktor oder über die Factory-Methode).
Möchtest du unbedingt etwas machen, bevor das Objekt genutzt wird; und du kannst das nicht direkt im Konstruktor erledigen, dann bietet sich die Factory-Methode an.
Näheres gibts auch in der :rtfm:
Hallo C#Gustl,
ich hoffe dich richtig verstanden zu haben. Da würde nicht Lazy<T>
verwenden, sondern Task<T>
.
Also die Tasks erstellen, in die Liste packen und dann beim Iterieren kannst du sie await
en.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"