Поделиться через


ReaderWriterLockSlim.TryEnterUpgradeableReadLock Метод

Определение

Пытается войти в блокировку в обновляемом режиме с необязательным указанием времени ожидания.

Перегрузки

TryEnterUpgradeableReadLock(Int32)

Пытается войти в блокировку в обновляемом режиме с необязательным указанием времени ожидания.

TryEnterUpgradeableReadLock(TimeSpan)

Пытается войти в блокировку в обновляемом режиме с необязательным указанием времени ожидания.

TryEnterUpgradeableReadLock(Int32)

Исходный код:
ReaderWriterLockSlim.cs
Исходный код:
ReaderWriterLockSlim.cs
Исходный код:
ReaderWriterLockSlim.cs

Пытается войти в блокировку в обновляемом режиме с необязательным указанием времени ожидания.

public:
 bool TryEnterUpgradeableReadLock(int millisecondsTimeout);
public bool TryEnterUpgradeableReadLock (int millisecondsTimeout);
member this.TryEnterUpgradeableReadLock : int -> bool
Public Function TryEnterUpgradeableReadLock (millisecondsTimeout As Integer) As Boolean

Параметры

millisecondsTimeout
Int32

Время ожидания в миллисекундах или -1 (Infinite) в случае неограниченного времени ожидания.

Возвращаемое значение

Значение true, если вызывающий поток вошел в обновляемый режим; в противном случае false.

Исключения

Свойство RecursionPolicy имеет значение NoRecursion, а текущий поток уже вошел в блокировку.

-или-

Текущий поток изначально вошел в блокировку в режиме чтения, поэтому попытка войти в обновляемый режим создаст возможность взаимоблокировки.

-или-

Глубина рекурсии превышает емкость счетчика. Ограничение допускает настолько большое число рекурсивных вхождений, что оно не должно достигаться приложениями на практике.

Значение параметра millisecondsTimeout меньше нуля, но не равно Infinite (-1), которое является единственным допустимым отрицательным значением.

Объект ReaderWriterLockSlim был удален.

Комментарии

Если millisecondsTimeout значение равно 0 (ноль), этот метод проверяет состояние блокировки и возвращает немедленно, false если требуемое состояние недоступно.

Используйте обновляемый режим, когда поток обычно обращается к ресурсу, защищенному ReaderWriterLockSlim с помощью , в режиме чтения, но при выполнении определенных условий может потребоваться перейти в режим записи. Поток в обновляемом режиме может обновиться до режима записи или перейти в режим чтения.

Только один поток может войти в блокировку в обновляемом режиме в любой момент времени. Если поток находится в обновляемом режиме и нет потоков, ожидающих перехода в режим записи, любое количество других потоков может перейти в режим чтения, даже если есть потоки, ожидающие перехода в обновляемый режим.

Если один или несколько потоков ожидают входа в режим записи, поток, вызывающий TryEnterUpgradeableReadLock метод, блокируется до тех пор, пока эти потоки не перешлы в режим записи, а затем не выходят из него, или пока не истечет собственный интервал времени ожидания вызывающего потока.

Примечание

Если блокировка допускает рекурсию, поток, который вступил в блокировку в обновляемом режиме, может рекурсивно перейти в обновляемый режим, даже если другие потоки ожидают перехода в режим записи.

Применяется к

TryEnterUpgradeableReadLock(TimeSpan)

Исходный код:
ReaderWriterLockSlim.cs
Исходный код:
ReaderWriterLockSlim.cs
Исходный код:
ReaderWriterLockSlim.cs

Пытается войти в блокировку в обновляемом режиме с необязательным указанием времени ожидания.

public:
 bool TryEnterUpgradeableReadLock(TimeSpan timeout);
public bool TryEnterUpgradeableReadLock (TimeSpan timeout);
member this.TryEnterUpgradeableReadLock : TimeSpan -> bool
Public Function TryEnterUpgradeableReadLock (timeout As TimeSpan) As Boolean

Параметры

timeout
TimeSpan

Период ожидания или значение -1 миллисекунда для ожидания в течение неограниченного времени.

Возвращаемое значение

Значение true, если вызывающий поток вошел в обновляемый режим; в противном случае false.

Исключения

Свойство RecursionPolicy имеет значение NoRecursion, а текущий поток уже вошел в блокировку.

-или-

Текущий поток изначально вошел в блокировку в режиме чтения, поэтому попытка войти в обновляемый режим создаст возможность взаимоблокировки.

-или-

Глубина рекурсии превышает емкость счетчика. Ограничение допускает настолько большое число рекурсивных вхождений, что оно не должно достигаться приложениями на практике.

Значение параметра timeout отрицательное, но оно не равно -1 миллисекунде, которое является единственным допустимым отрицательным значением.

-или-

Значение больше, чем Int32.MaxValue в миллисекундахtimeout.

Объект ReaderWriterLockSlim был удален.

Комментарии

Если timeout значение равно 0 (ноль), этот метод проверяет состояние блокировки и возвращает немедленно, false если требуемое состояние недоступно.

Используйте обновляемый режим, когда поток обычно обращается к ресурсу, защищенному ReaderWriterLockSlim с помощью , в режиме чтения, но при соблюдении определенных условий может потребоваться перейти в режим записи. Поток в обновляемом режиме может обновиться до режима записи или перейти в режим чтения.

Только один поток может войти в блокировку в обновляемом режиме в любой момент времени. Если поток находится в обновляемом режиме и нет потоков, ожидающих перехода в режим записи, любое количество других потоков может перейти в режим чтения, даже если есть потоки, ожидающие перехода в обновляемый режим.

Если один или несколько потоков ожидают входа в режим записи, поток, вызывающий TryEnterUpgradeableReadLock метод, блокируется до тех пор, пока эти потоки не перешлы в режим записи, а затем не выходят из него, или пока не истечет собственный интервал времени ожидания вызывающего потока.

Примечание

Если блокировка допускает рекурсию, поток, который вступил в блокировку в обновляемом режиме, может рекурсивно перейти в обновляемый режим, даже если другие потоки ожидают перехода в режим записи.

Применяется к