ReaderWriterLockSlim.ExitReadLock 方法

定義

減少讀取模式遞迴的計數,如果得出的計數為 0 (零),則結束讀取模式。

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

例外狀況

目前的執行緒尚未進入讀取模式的鎖定狀態。

範例

下列範例示範如何使用 finally 區塊來執行 ExitReadLock 方法,以確保呼叫端結束讀取模式。 範例中顯示的 方法會擷取與索引鍵相關聯的值。 如果找不到索引鍵,內部擲回的 Dictionary<TKey,TValue> 例外狀況會允許終止 方法。 方法 EnterReadLock 可用來進入讀取模式。

此程式碼是類別所提供較大範例的 ReaderWriterLockSlim 一部分。

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

備註

這個方法對遞迴順序不敏感。 例如,如果執行緒在可升級模式中進入鎖定,然後在讀取模式中進入鎖定,則執行緒結束這兩種模式的順序並不重要。 如果鎖定允許遞迴,執行緒可以在寫入模式中進入鎖定,然後在讀取模式中以遞迴方式輸入它;執行緒結束讀取模式和寫入模式的順序並不重要。

結束鎖定可能會發出其他等候執行緒的訊號。

適用於