myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Rund um die Programmierung » Lazy - wenn IsValueCreated true ist dann führe methode aus
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

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

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
C#Gustl
myCSharp.de-Mitglied

Dabei seit: 17.04.2012
Beiträge: 35


C#Gustl ist offline

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

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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ß
12.12.2018 08:22 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
BhaaL BhaaL ist männlich
myCSharp.de-Mitglied

Dabei seit: 14.02.2008
Beiträge: 633
Entwicklungsumgebung: VS2017


BhaaL ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Du kannst Lazy<T> im wesentlichen auf 3 Arten initialisieren:
  1. per Standard-Konstruktor
  2. per direkter Objekt-Übergabe
  3. 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   Bitte schau in die SDK-/MSDN-Doku
12.12.2018 08:33 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
gfoidl gfoidl ist männlich
myCSharp.de-Team

avatar-2894.jpg


Dabei seit: 07.06.2009
Beiträge: 6.659
Entwicklungsumgebung: VS 2019
Herkunft: Waidring


gfoidl ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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ü
12.12.2018 10:36 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 10.08.2020 07:28