ReaderWriterLockSlim.ExitReadLock 方法

定義

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

public void ExitReadLock();

例外狀況

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

範例

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

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

private ReaderWriterLockSlim cacheLock = new ReaderWriterLockSlim();
private Dictionary<int, string> innerCache = new Dictionary<int, string>();
public string Read(int key)
{
    cacheLock.EnterReadLock();
    try
    {
        return innerCache[key];
    }
    finally
    {
        cacheLock.ExitReadLock();
    }
}

備註

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

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

適用於

產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0