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, erişim sağlandıkça hedeflerin 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

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

Henüz başlatılmamışsa belirtilen bir işlevi kullanarak bir hedef başvuru veya değer türü 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, 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 hedef başvuru türünü başlatır.

EnsureInitialized<T>(T)

Henüz başlatılmamışsa türün parametresiz oluşturucuyla bir hedef başvuru türü 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.