LazyInitializer Classe

Definizione

Fornisce routine di inizializzazione differita.

public ref class LazyInitializer abstract sealed
public static class LazyInitializer
type LazyInitializer = class
Public Class LazyInitializer
Ereditarietà
LazyInitializer

Esempio

Nell'esempio seguente viene illustrato come usare EnsureInitialized per inizializzare un valore usando un valore booleano per tenere traccia del fatto che l'inizializzazione sia già avvenuta e un oggetto da usare come blocco di esclusione reciproca.

Dim _data As ExpensiveData = Nothing  
Dim _dataInitialized As Boolean = False  
Dim _dataLock As Object = Nothing  
'    ...  
Dim name = LazyInitializer.EnsureInitialized(_data, _dataInitialized, _dataLock)  
ExpensiveData _data = null;  
bool _dataInitialized = false;  
object _dataLock = new object();  

//  ...  

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

Commenti

Queste routine evitano la necessità di allocare un'istanza dedicata di inizializzazione lazy, usando invece i riferimenti per assicurarsi che le destinazioni siano state inizializzate man mano che sono accessibili.

Metodi

EnsureInitialized<T>(T)

Inizializza un tipo di riferimento di destinazione con il relativo costruttore senza parametri se non è già stato inizializzato.

EnsureInitialized<T>(T, Boolean, Object)

Inizializza un tipo riferimento o valore di destinazione con il relativo costruttore senza parametri se non è già stato inizializzato.

EnsureInitialized<T>(T, Boolean, Object, Func<T>)

Inizializza un tipo di riferimento o di valore di destinazione utilizzando una funzione specificata se non è già stato inizializzato.

EnsureInitialized<T>(T, Func<T>)

Inizializza un tipo di riferimento di destinazione utilizzando una funzione specificata se non è già stato inizializzato.

EnsureInitialized<T>(T, Object, Func<T>)

Inizializza un tipo di riferimento di destinazione con una funzione specificata se non è già stato inizializzato.

Si applica a

Thread safety

I metodi di LazyInitializer sono thread-safe e possono essere chiamati contemporaneamente da più thread.

Vedi anche