ReaderWriterLockSlim.TryEnterReadLock Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Пытается войти в блокировку в режиме чтения с необязательным указанием времени ожидания.
Перегрузки
TryEnterReadLock(Int32) |
Пытается войти в блокировку в режиме чтения с необязательным указанием времени ожидания целым числом. |
TryEnterReadLock(TimeSpan) |
Пытается войти в блокировку в режиме чтения с необязательным указанием времени ожидания. |
TryEnterReadLock(Int32)
- Исходный код:
- ReaderWriterLockSlim.cs
- Исходный код:
- ReaderWriterLockSlim.cs
- Исходный код:
- ReaderWriterLockSlim.cs
Пытается войти в блокировку в режиме чтения с необязательным указанием времени ожидания целым числом.
public:
bool TryEnterReadLock(int millisecondsTimeout);
public bool TryEnterReadLock (int millisecondsTimeout);
member this.TryEnterReadLock : int -> bool
Public Function TryEnterReadLock (millisecondsTimeout As Integer) As Boolean
Параметры
- millisecondsTimeout
- Int32
Время ожидания в миллисекундах или -1 (Infinite) в случае неограниченного времени ожидания.
Возвращаемое значение
Значение true
, если вызывающий поток вошел в режим чтения; в противном случае false
.
Исключения
Свойство RecursionPolicy имеет значение NoRecursion, а текущий поток уже вошел в блокировку.
-или-
Глубина рекурсии превышает емкость счетчика. Ограничение допускает настолько большое число рекурсивных вхождений, что оно не должно достигаться приложениями на практике.
Значение параметра millisecondsTimeout
меньше нуля, но не равно Infinite (-1), которое является единственным допустимым отрицательным значением.
Объект ReaderWriterLockSlim был удален.
Комментарии
Если millisecondsTimeout
имеет значение 0 (ноль), этот метод проверяет состояние блокировки и немедленно возвращает значение false
, если требуемое состояние недоступно.
Несколько потоков могут одновременно переходить в режим чтения.
Если один или несколько потоков ожидают выхода в режим записи, поток, вызывающий TryEnterReadLock метод, блокируется до тех пор, пока эти потоки не истечет время ожидания или не перейдет в режим записи, а затем не выйдет из него или пока не истечет собственный интервал времени ожидания вызывающего потока.
Примечание
Если блокировка допускает рекурсию, поток, который вступил в блокировку в режиме чтения, может рекурсивно перейти в режим чтения, даже если другие потоки ожидают выхода в режим записи.
Один поток может находиться в обновляемом режиме, а другие — в режиме чтения. Если дополнительные потоки ожидают перехода в обновляемый режим и нет потоков, ожидающих перехода в режим записи, потоки, вызывающие TryEnterReadLock метод, немедленно переходят в режим чтения и не блокируются.
Применяется к
TryEnterReadLock(TimeSpan)
- Исходный код:
- ReaderWriterLockSlim.cs
- Исходный код:
- ReaderWriterLockSlim.cs
- Исходный код:
- ReaderWriterLockSlim.cs
Пытается войти в блокировку в режиме чтения с необязательным указанием времени ожидания.
public:
bool TryEnterReadLock(TimeSpan timeout);
public bool TryEnterReadLock (TimeSpan timeout);
member this.TryEnterReadLock : TimeSpan -> bool
Public Function TryEnterReadLock (timeout As TimeSpan) As Boolean
Параметры
- timeout
- TimeSpan
Период ожидания или значение -1 миллисекунда для ожидания в течение неограниченного времени.
Возвращаемое значение
Значение true
, если вызывающий поток вошел в режим чтения; в противном случае false
.
Исключения
Свойство RecursionPolicy имеет значение NoRecursion, а текущий поток уже вошел в блокировку.
-или-
Глубина рекурсии превышает емкость счетчика. Ограничение допускает настолько большое число рекурсивных вхождений, что оно не должно достигаться приложениями на практике.
Значение параметра timeout
отрицательное, но оно не равно -1 миллисекунде, которое является единственным допустимым отрицательным значением.
-или-
Значение параметра больше, чем Int32.MaxValue в миллисекундахtimeout
.
Объект ReaderWriterLockSlim был удален.
Комментарии
Если timeout
имеет значение 0 (ноль), этот метод проверяет состояние блокировки и немедленно возвращает значение false
, если требуемое состояние недоступно.
Несколько потоков могут одновременно войти в блокировку в режиме чтения.
Если один или несколько потоков помещаются в очередь для входа в режим записи, поток, вызывающий TryEnterReadLock метод, блокируется до тех пор, пока эти потоки не истечет время ожидания или не перейдет в режим записи, а затем не выйдет из него или пока не истечет собственный интервал времени ожидания вызывающего потока.
Примечание
Если блокировка допускает рекурсию, поток, который вступил в блокировку в режиме чтения, может рекурсивно перейти в режим чтения, даже если другие потоки ожидают выхода в режим записи.
Один поток может находиться в обновляемом режиме, а другие — в режиме чтения. Если дополнительные потоки ожидают перехода в обновляемый режим и нет потоков, ожидающих перехода в режим записи, потоки, вызывающие TryEnterReadLock метод, немедленно переходят в режим чтения и не блокируются.