ReaderWriterLockSlim.ExitReadLock 方法

定义

减少读取模式的递归计数,并在生成的计数为 0(零)时退出读取模式。

C#
public void ExitReadLock();

例外

当前线程未进入读取模式锁定状态。

示例

以下示例演示如何使用 finally 块执行 ExitReadLock 方法,确保调用方退出读取模式。 示例中所示的 方法检索与键关联的值。 如果未找到密钥,则允许内部 Dictionary<TKey,TValue> 引发的异常终止方法。 方法 EnterReadLock 用于进入读取模式。

此代码是为 类提供的更大示例的 ReaderWriterLockSlim 一部分。

C#
private ReaderWriterLockSlim cacheLock = new ReaderWriterLockSlim();
private Dictionary<int, string> innerCache = new Dictionary<int, string>();
C#
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