ReaderWriterLockSlim.ExitWriteLock 方法

定义

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

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

例外

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

示例

以下示例演示如何使用 finally 块执行 ExitWriteLock 方法,确保调用方退出写入模式。 示例中所示的 方法将新的键/值对添加到同步缓存。 如果密钥已位于缓存中,则允许内部 Dictionary<TKey,TValue> 引发的异常终止 方法。 方法 EnterWriteLock 用于在写入模式下进入锁。

此代码是为 类提供的更大示例的 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 void Add(int key, string value)
{
    cacheLock.EnterWriteLock();
    try
    {
        innerCache.Add(key, value);
    }
    finally
    {
        cacheLock.ExitWriteLock();
    }
}
Public Sub Add(ByVal key As Integer, ByVal value As String)
    cacheLock.EnterWriteLock()
    Try
        innerCache.Add(key, value)
    Finally
        cacheLock.ExitWriteLock()
    End Try
End Sub

注解

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

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

适用于