Compartilhar via


LazyInitializer Classe

Definição

Fornece rotinas de inicialização lentas.

public ref class LazyInitializer abstract sealed
public static class LazyInitializer
type LazyInitializer = class
Public Class LazyInitializer
Herança
LazyInitializer

Exemplos

O exemplo a seguir demonstra como usar EnsureInitialized para inicializar de forma preguiçosa um valor usando um valor booliano para acompanhar se a inicialização já aconteceu e um objeto a ser usado como o bloqueio de exclusão mútua.

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);  

Comentários

Essas rotinas evitam a necessidade de alocar uma instância dedicada de inicialização lenta, em vez disso, usando referências para garantir que os destinos tenham sido inicializados à medida que são acessados.

Métodos

EnsureInitialized<T>(T)

Inicializa um tipo de referência de destino com o construtor sem parâmetro de tipo se ele ainda não foi inicializado.

EnsureInitialized<T>(T, Boolean, Object)

Inicializa uma referência de destino ou um tipo de valor com seu construtor sem parâmetro se ele ainda não foi inicializado.

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

Inicializa um tipo de valor ou referência de destino usando uma função especificadas se ainda não tiver sido inicializada.

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

Inicializa um tipo de referência de destino usando uma função especificadas se ainda não tiver sido inicializada.

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

Inicializará um tipo de referência de destino com uma função especificada se ainda não tiver sido inicializado.

Aplica-se a

Acesso thread-safe

Os métodos são LazyInitializer thread-safe e podem ser chamados de vários threads simultaneamente.

Confira também