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
Комментарии
Этот метод не учитывает порядок рекурсии. Например, если поток переходит в блокировку в обновляемом режиме, а затем переходит в блокировку в режиме записи, порядок выхода потока из двух режимов не имеет значения. Если блокировка разрешает рекурсию, поток может войти в блокировку в режиме записи, а затем ввести ее рекурсивно в режиме чтения; Порядок выхода потока из режима чтения и записи не имеет значения.
Выход из блокировки может сигнализировать о других ожидающих потоках.