Sdílet prostřednictvím


LazyInitializer Třída

Definice

Poskytuje opožděné inicializační rutiny.

public ref class LazyInitializer abstract sealed
public static class LazyInitializer
type LazyInitializer = class
Public Class LazyInitializer
Dědičnost
LazyInitializer

Příklady

Následující příklad ukazuje, jak použít EnsureInitialized k lazily inicializaci hodnoty pomocí logické hodnoty ke sledování, zda se inicializace již stala a objekt, který se má použít jako vzájemné uzamčení vyloučení.

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

Poznámky

Tyto rutiny se nemusí přidělovat vyhrazenou, opožděnou inicializační instanci, místo toho pomocí odkazů zajistit, aby byly cíle inicializovány při přístupu.

Metody

EnsureInitialized<T>(T)

Inicializuje cílový typ odkazu pomocí konstruktoru bez parametrů typu, pokud ještě nebyl inicializován.

EnsureInitialized<T>(T, Boolean, Object)

Inicializuje cílový odkaz nebo typ hodnoty pomocí jeho konstruktoru bez parametrů, pokud ještě nebyl inicializován.

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

Inicializuje cílový odkaz nebo typ hodnoty pomocí zadané funkce, pokud ještě nebyl inicializován.

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

Inicializuje cílový typ odkazu pomocí zadané funkce, pokud ještě nebyl inicializován.

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

Inicializuje cílový typ odkazu se zadanou funkcí, pokud ještě nebyl inicializován.

Platí pro

Bezpečný přístup z více vláken

Metody LazyInitializer jsou bezpečné pro vlákna a mohou být volána z více vláken současně.

Viz také