ReaderWriterLockSlim.EnterWriteLock Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Kilidi yazma moduna girmeye çalışır.
public:
void EnterWriteLock();
public void EnterWriteLock();
member this.EnterWriteLock : unit -> unit
Public Sub EnterWriteLock ()
Özel durumlar
RecursionPolicy özelliğidir NoRecursion ve geçerli iş parçacığı kilidi herhangi bir modda zaten girmiştir.
-veya-
Geçerli iş parçacığı okuma moduna girdi ve henüz yazma kilidine sahip değil, bu nedenle yazma moduna kilidi girmeye çalışmak kilitlenme olasılığına neden olabilir.
-veya-
Özyineleme numarası sayacın kapasitesini aşabilir. Sınır, uygulamaların hiçbir zaman karşılaşmaması için o kadar büyük ki.
ReaderWriterLockSlim Nesnesi atılmış.
Örnekler
Aşağıdaki örnekte yazma moduna kilit girmek için yönteminin nasıl kullanılacağı EnterWriteLock gösterilmektedir. Örnekte gösterilen yöntem, eşitlenen önbelleğe yeni bir anahtar/değer çifti ekler. Anahtar zaten önbellekteyse, iç Dictionary<TKey,TValue> tarafından oluşan özel durumun yöntemi sonlandırmasına izin verilir.
finally Çağıranın yazma modundan ExitWriteLock çıktığından emin olmak için yöntemini yürütmek için bir blok kullanılır.
Bu kod, sınıfı için ReaderWriterLockSlim sağlanan daha büyük bir örneğin parçasıdır.
private ReaderWriterLockSlim cacheLock = new ReaderWriterLockSlim();
private Dictionary<int, string> innerCache = new Dictionary<int, string>();
Private cacheLock As New ReaderWriterLockSlim()
Private innerCache As New Dictionary(Of Integer, String)
public void Add(int key, string value)
{
cacheLock.EnterWriteLock();
try
{
innerCache.Add(key, value);
}
finally
{
cacheLock.ExitWriteLock();
}
}
Public Sub Add(ByVal key As Integer, ByVal value As String)
cacheLock.EnterWriteLock()
Try
innerCache.Add(key, value)
Finally
cacheLock.ExitWriteLock()
End Try
End Sub
Açıklamalar
Bu yöntem çağıran iş parçacığı kilidi girene kadar engeller ve bu nedenle hiçbir zaman döndürmeyebilir. TryEnterWriteLock Belirtilen bir aralığı engellemek için yöntemini kullanın ve çağıran iş parçacığı bu aralık boyunca yazma moduna girmediyse döndürür.
Diğer iş parçacıkları okuma modunda kilit girdiyse, bu iş parçacıkları okuma modundan çıkana EnterWriteLock kadar yöntemini çağıran bir iş parçacığı blokları. Yazma moduna girmeyi bekleyen iş parçacıkları olduğunda, yazma moduna girmeyi bekleyen tüm iş parçacıkları zaman aşımına uğradı veya yazma moduna girdikten sonra bu moddan çıkana kadar okuma moduna veya yükseltilebilir moda girmeye çalışan ek iş parçacıkları engellenir.
Note
Bir kilit özyinelemeye izin veriyorsa, yazma moduna kilit giren bir iş parçacığı, diğer iş parçacıkları yazma moduna girmeyi bekliyor olsa bile yinelemeli olarak yazma moduna girebilir.