Share via


ReaderWriterLockSlim.ExitReadLock Yöntem

Tanım

Okuma modu için özyineleme sayısını azaltır ve sonuçta elde edilen sayı 0 (sıfır) ise okuma modundan çıkar.

public:
 void ExitReadLock();
public void ExitReadLock ();
member this.ExitReadLock : unit -> unit
Public Sub ExitReadLock ()

Özel durumlar

Geçerli iş parçacığı okuma modunda kilide girmemiş.

Örnekler

Aşağıdaki örnekte, çağıranın okuma modundan ExitReadLock çıktığından emin olarak yöntemini yürütmek için bir finally bloğun nasıl kullanılacağı gösterilmektedir. Örnekte gösterilen yöntem bir anahtarla ilişkili değeri alır. Anahtar bulunamazsa, iç Dictionary<TKey,TValue> tarafından oluşan özel durumun yöntemi sonlandırmasına izin verilir. EnterReadLock yöntemi, okuma moduna girmek için 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 string Read(int key)
{
    cacheLock.EnterReadLock();
    try
    {
        return innerCache[key];
    }
    finally
    {
        cacheLock.ExitReadLock();
    }
}
Public Function Read(ByVal key As Integer) As String
    cacheLock.EnterReadLock()
    Try
        Return innerCache(key)
    Finally
        cacheLock.ExitReadLock()
    End Try
End Function

Açıklamalar

Bu yöntem özyineleme sırasına duyarlı değildir. Örneğin, bir iş parçacığı yükseltilebilir modda bir kilit girip sonra da kilidi okuma moduna girerse, iş parçacığının iki moddan çıkma sırası önemli değildir. Bir kilit özyinelemeye izin veriyorsa, iş parçacığı kilidi yazma moduna girebilir ve ardından okuma modunda özyinelemeli olarak girebilir; yazışmanın okuma modundan çıkış sırası ve yazma modu önemli değildir.

Kilit çıkışı diğer bekleyen iş parçacıklarına işaret edebilir.

Şunlara uygulanır