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 e lenta de inicialização, em vez disso, usando referências para garantir que os destinos tenham sido inicializados à medida que são acessados.

Métodos

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

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

EnsureInitialized<T>(T, Boolean, Object)

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

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

Inicializa um tipo de referência de destino usando uma função especificada se ela ainda não foi inicializada.

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

Inicializa um tipo de referência de destino com uma função especificada se ela ainda não foi inicializada.

EnsureInitialized<T>(T)

Inicializa um tipo de referência de destino com o construtor sem parâmetros do tipo se ele ainda não tiver sido inicializado.

Aplica-se a

Acesso thread-safe

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

Confira também