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


SpinLock.TryEnter Метод

Определение

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

Перегрузки

TryEnter(Boolean)

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

TryEnter(Int32, Boolean)

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

TryEnter(TimeSpan, Boolean)

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

TryEnter(Boolean)

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

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

public:
 void TryEnter(bool % lockTaken);
public void TryEnter (ref bool lockTaken);
member this.TryEnter : bool -> unit
Public Sub TryEnter (ByRef lockTaken As Boolean)

Параметры

lockTaken
Boolean

Значение true, если блокировка получена; в противном случае — значение false. Перед вызовом этого метода необходимо инициализировать параметр lockTaken.

Исключения

Аргумент lockTaken должен быть инициализирован в false до вызова TryEnter.

Включено отслеживание владения потоками, и текущий поток уже получил эту блокировку.

Комментарии

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

См. также раздел

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

TryEnter(Int32, Boolean)

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

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

public:
 void TryEnter(int millisecondsTimeout, bool % lockTaken);
public void TryEnter (int millisecondsTimeout, ref bool lockTaken);
member this.TryEnter : int * bool -> unit
Public Sub TryEnter (millisecondsTimeout As Integer, ByRef lockTaken As Boolean)

Параметры

millisecondsTimeout
Int32

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

lockTaken
Boolean

Значение true, если блокировка получена; в противном случае — значение false. Перед вызовом этого метода необходимо инициализировать параметр lockTaken.

Исключения

Параметр millisecondsTimeout является отрицательным числом, отличным от –1, что означает бесконечное время ожидания.

Аргумент lockTaken должен быть инициализирован в false до вызова TryEnter.

Включено отслеживание владения потоками, и текущий поток уже получил эту блокировку.

Комментарии

В отличие от Enter, TryEnter не будет блокировать бесконечное ожидание блокировки. Она будет блокироваться до тех пор, пока не будет доступна блокировка millisecondsTimeout или пока не истечет срок действия.

См. также раздел

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

TryEnter(TimeSpan, Boolean)

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

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

public:
 void TryEnter(TimeSpan timeout, bool % lockTaken);
public void TryEnter (TimeSpan timeout, ref bool lockTaken);
member this.TryEnter : TimeSpan * bool -> unit
Public Sub TryEnter (timeout As TimeSpan, ByRef lockTaken As Boolean)

Параметры

timeout
TimeSpan

Период TimeSpan, представляющий время ожидания в миллисекундах, или период TimeSpan, представляющий -1 миллисекунду для неограниченного ожидания.

lockTaken
Boolean

Значение true, если блокировка получена; в противном случае — значение false. Перед вызовом этого метода необходимо инициализировать параметр lockTaken.

Исключения

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

Аргумент lockTaken должен быть инициализирован в false до вызова TryEnter.

Включено отслеживание владения потоками, и текущий поток уже получил эту блокировку.

Комментарии

В отличие от Enter, TryEnter не будет блокировать бесконечное ожидание блокировки. Она будет блокироваться до тех пор, пока не будет доступна блокировка timeout или пока не истечет срок действия.

См. также раздел

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