ReaderWriterLockSlim.EnterWriteLock Yöntem

Tanım

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.

Ö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.

Şunlara uygulanır