Laden...

Lazy - wenn IsValueCreated true ist dann führe methode aus

Erstellt von C#Gustl vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.411 Views
C
C#Gustl Themenstarter:in
36 Beiträge seit 2012
vor 5 Jahren
Lazy - wenn IsValueCreated true ist dann führe methode aus

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ß

656 Beiträge seit 2008
vor 5 Jahren

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:

6.911 Beiträge seit 2009
vor 5 Jahren

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 awaiten.

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!"