Aracılığıyla paylaş


LazyInitializer Sınıf

Tanım

Yavaş başlatma yordamları sağlar.

public ref class LazyInitializer abstract sealed
public static class LazyInitializer
type LazyInitializer = class
Public Class LazyInitializer
Devralma
LazyInitializer

Örnekler

Aşağıdaki örnek, başlatmanın zaten olup olmadığını ve karşılıklı dışlama kilidi olarak kullanılacak bir nesneyi izlemek üzere Boole değeri kullanarak bir değeri lazily başlatmak için EnsureInitialized'ın nasıl kullanılacağını gösterir.

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

Açıklamalar

Bu yordamlar, hedeflerin erişildikçe başlatıldığından emin olmak için başvurular kullanmak yerine ayrılmış, gecikmeli başlatma örneği ayırma gereğini ortadan kaldırır.

Yöntemler

EnsureInitialized<T>(T)

Henüz başlatılmamışsa türün parametresiz oluşturucuyla bir hedef başvuru türünü başlatır.

EnsureInitialized<T>(T, Boolean, Object)

Henüz başlatılmamışsa, parametresiz oluşturucuyla bir hedef başvuruyu veya değer türünü başlatır.

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

Henüz başlatılmamışsa belirtilen bir işlevi kullanarak hedef başvuru veya değer türünü başlatır.

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

Henüz başlatılmamışsa, belirtilen bir işlevi kullanarak hedef başvuru türünü başlatır.

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

Henüz başlatılmamışsa, belirtilen bir işlevle bir hedef başvuru türünü başlatır.

Şunlara uygulanır

İş Parçacığı Güvenliği

yöntemleri LazyInitializer iş parçacığı açısından güvenlidir ve aynı anda birden çok iş parçacığından çağrılabilir.

Ayrıca bkz.