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