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


Lock.TryEnter Метод

Определение

Перегрузки

TryEnter()

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

TryEnter(Int32)

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

TryEnter(TimeSpan)

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

TryEnter()

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

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

public:
 bool TryEnter();
public bool TryEnter ();
member this.TryEnter : unit -> bool
Public Function TryEnter () As Boolean

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

true Значение , если блокировка была введена текущим потоком; в противном случае — false.

Исключения

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

Комментарии

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

Дополнительные сведения см. в примечаниях к описанию Lock.

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

TryEnter(Int32)

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

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

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

Параметры

millisecondsTimeout
Int32

Время ожидания блокировки в миллисекундах. Укажите timeout.Infinite (-1), чтобы ждать бесконечно или 0 не ждать.

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

true Значение , если блокировка была введена текущим потоком; в противном случае — false.

Исключения

Значение millisecondsTimeout меньше -1.

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

Комментарии

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

Дополнительные сведения см. в примечаниях к описанию Lock.

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

TryEnter(TimeSpan)

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

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

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

Параметры

timeout
TimeSpan

Значение типа , TimeSpan представляющее количество миллисекундах для ожидания до ввода блокировки. Укажите значение, представляющее timeout.Infinite (-1) в миллисекундах для неограниченного ожидания, или значение, представляющее миллисекунды 0 , чтобы не ждать.

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

true Значение , если блокировка была введена текущим потоком; в противном случае — false.

Исключения

timeout, после преобразования в целочисленное значение миллисекунда представляет значение, которое меньше -1 миллисекунда или больше int32.MaxValue в миллисекундах.

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

Комментарии

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

Дополнительные сведения см. в примечаниях к описанию Lock.

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