Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

LazyInitializer-Klasse

Stellt verzögerte Initialisierungsroutinen bereit.

System.Object
  System.Threading.LazyInitializer

Namespace:  System.Threading
Assembly:  mscorlib (in mscorlib.dll)

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public static class LazyInitializer

  NameBeschreibung
Öffentliche MethodeStatischer MemberEnsureInitialized<T>(T)Initialisiert einen Zielverweistyp mit dem Standardkonstruktor des Typs, wenn das Ziel noch nicht initialisiert wurde.
Öffentliche MethodeStatischer MemberEnsureInitialized<T>(T, Func<T>)Initialisiert einen Zielverweistyp mit der angegebenen Funktion, wenn er noch nicht initialisiert wurde.
Öffentliche MethodeStatischer MemberEnsureInitialized<T>(T, Boolean, Object)Initialisiert einen Zielverweis- oder Werttyp mit seinem Standardkonstruktor, wenn er noch nicht initialisiert wurde.
Öffentliche MethodeStatischer MemberEnsureInitialized<T>(T, Boolean, Object, Func<T>)Initialisiert einen Zielverweis- oder Werttyp mit einer angegebenen Funktion, wenn er noch nicht initialisiert wurde.
Zum Seitenanfang

Diese Routinen vermeiden das Erfordernis, eine dedizierte Instanz mit verzögerter Initialisierung zuordnen zu müssen, stattdessen werden Verweisen verwendet, um sicherzustellen, dass Ziele initialisiert wurden, wenn auf sie zugegriffen wird.

HinweisHinweis

Das auf diesen Typ oder Member angewendete HostProtectionAttribute-Attribut besitzt den folgenden Resources-Eigenschaftswert: Synchronization | ExternalThreading. Das HostProtectionAttribute hat keine Auswirkungen auf Desktopanwendungen (die normalerweise durch Doppelklicken auf ein Symbol, Eingeben eines Befehls oder einer URL in einem Browser gestartet werden). Weitere Informationen finden Sie unter der HostProtectionAttribute-Klasse oder unter SQL Server-Programmierung und Hostschutzattribute.

Im folgenden Beispiel wird veranschaulicht, wie EnsureInitialized verwendet wird, um einen Wert mithilfe eines nachzuverfolgenden booleschen Werts langsam zu initialisieren, egal, ob die Initialisierung bereits erfolgt ist, und ein Objekt, das als Sperre für den gegenseitiger Ausschluss zu verwenden ist.

ExpensiveData _data = null;
                     bool _dataInitialized = false;
                     object _dataLock = new object();
                  //  ...

                    ExpensiveData dataToUse = LazyInitializer.EnsureInitialized(ref _data, ref _dataInitialized, ref _dataLock);

.NET Framework

Unterstützt in: 4

.NET Framework Client Profile

Unterstützt in: 4

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Die Methoden von LazyInitializer sind threadsicher und können von mehreren Threads gleichzeitig aufgerufen werden.

Anzeigen: