Compartilhar via


ReaderWriterLockSlim.TryEnterUpgradeableReadLock Método

Definição

Tenta inserir o bloqueio no modo de upgrade, com um tempo limite opcional.

Sobrecargas

TryEnterUpgradeableReadLock(Int32)

Tenta inserir o bloqueio no modo de upgrade, com um tempo limite opcional.

TryEnterUpgradeableReadLock(TimeSpan)

Tenta inserir o bloqueio no modo de upgrade, com um tempo limite opcional.

TryEnterUpgradeableReadLock(Int32)

Origem:
ReaderWriterLockSlim.cs
Origem:
ReaderWriterLockSlim.cs
Origem:
ReaderWriterLockSlim.cs

Tenta inserir o bloqueio no modo de upgrade, com um tempo limite opcional.

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

Parâmetros

millisecondsTimeout
Int32

O número de milissegundos a aguardar ou -1 (Infinite) para aguardar indefinidamente.

Retornos

true se o thread de chamada tiver entrado no modo de upgrade, caso contrário, false.

Exceções

A propriedade RecursionPolicy é NoRecursion e o thread atual já entrou no bloqueio.

- ou -

O thread atual inseriu inicialmente o bloqueio no modo de leitura, portanto, tentar entrar no modo de upgrade geraria a possibilidade de um deadlock.

- ou -

O número de recursão excederia a capacidade do contador. O limite é tão grande que os aplicativos nunca o alcançariam.

O valor de millisecondsTimeout é negativo, mas não é igual a Infinite (-1), que é o único valor negativo permitido.

Comentários

Se millisecondsTimeout for 0 (zero), esse método verificará o estado de bloqueio e retornará false imediatamente se o estado desejado não estiver disponível.

Use o ReaderWriterLockSlim modo atualizável quando um thread geralmente acessa o recurso protegido pelo no modo de leitura, mas pode precisar entrar no modo de gravação se determinadas condições forem atendidas. Um thread no modo atualizável pode atualizar para o modo de gravação ou fazer downgrade para o modo de leitura.

Somente um thread pode inserir um bloqueio no modo atualizável a qualquer momento. Se um thread estiver no modo atualizável e não houver threads aguardando para entrar no modo de gravação, qualquer número de outros threads poderá entrar no modo de leitura, mesmo que haja threads aguardando para entrar no modo atualizável.

Se um ou mais threads estiverem aguardando para entrar no modo de gravação, um thread que chama o TryEnterUpgradeableReadLock método será bloqueado até que esses threads tenham expirado ou entrado no modo de gravação e, em seguida, tenham saído dele ou até que o intervalo de tempo limite do thread de chamada expire.

Observação

Se um bloqueio permitir recursão, um thread que entrou no bloqueio no modo atualizável poderá entrar no modo atualizável recursivamente, mesmo que outros threads estejam aguardando para entrar no modo de gravação.

Aplica-se a

TryEnterUpgradeableReadLock(TimeSpan)

Origem:
ReaderWriterLockSlim.cs
Origem:
ReaderWriterLockSlim.cs
Origem:
ReaderWriterLockSlim.cs

Tenta inserir o bloqueio no modo de upgrade, com um tempo limite opcional.

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

Parâmetros

timeout
TimeSpan

O intervalo para esperar ou -1 milissegundo para aguardar indefinidamente.

Retornos

true se o thread de chamada tiver entrado no modo de upgrade, caso contrário, false.

Exceções

A propriedade RecursionPolicy é NoRecursion e o thread atual já entrou no bloqueio.

- ou -

O thread atual inseriu inicialmente o bloqueio no modo de leitura, portanto, tentar entrar no modo de upgrade geraria a possibilidade de um deadlock.

- ou -

O número de recursão excederia a capacidade do contador. O limite é tão grande que os aplicativos nunca o alcançariam.

O valor de timeout é negativo, mas não é igual a -1 milissegundo, que é o único valor negativo permitido.

- ou -

O valor de timeout é maior que Int32.MaxValue milissegundos.

Comentários

Se timeout for 0 (zero), esse método verificará o estado de bloqueio e retornará false imediatamente se o estado desejado não estiver disponível.

Use o modo atualizável quando um thread geralmente acessa o recurso protegido pelo ReaderWriterLockSlim no modo de leitura, mas pode precisar entrar no modo de gravação se determinadas condições forem atendidas. Um thread no modo atualizável pode atualizar para o modo de gravação ou fazer downgrade para o modo de leitura.

Somente um thread pode inserir um bloqueio no modo atualizável a qualquer momento. Se um thread estiver no modo atualizável e não houver threads aguardando para entrar no modo de gravação, qualquer número de outros threads poderá entrar no modo de leitura, mesmo que haja threads aguardando para entrar no modo atualizável.

Se um ou mais threads estiverem aguardando para entrar no modo de gravação, um thread que chama o TryEnterUpgradeableReadLock método será bloqueado até que esses threads tenham expirado ou entrado no modo de gravação e, em seguida, tenham saído dele ou até que o intervalo de tempo limite do thread de chamada expire.

Observação

Se um bloqueio permitir recursão, um thread que entrou no bloqueio no modo atualizável poderá entrar no modo atualizável recursivamente, mesmo que outros threads estejam aguardando para entrar no modo de gravação.

Aplica-se a