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

注解

此方法对递归顺序不敏感。 例如,如果线程在可升级模式下进入锁,然后在读取模式下进入锁,则线程退出这两种模式的顺序并不重要。 如果锁允许递归,线程可以在写入模式下进入锁,然后在读取模式下以递归方式输入它:线程退出读取模式和写入模式的顺序并不重要。

退出锁可能表示其他正在等待的线程。

适用于