ReaderWriterLockSlim.TryEnterUpgradeableReadLock Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Tenta inserir o bloqueio no modo atualizável, com um tempo limite opcional.
Sobrecargas
| Nome | Description |
|---|---|
| TryEnterUpgradeableReadLock(Int32) |
Tenta inserir o bloqueio no modo atualizável, com um tempo limite opcional. |
| TryEnterUpgradeableReadLock(TimeSpan) |
Tenta inserir o bloqueio no modo atualizável, com um tempo limite opcional. |
TryEnterUpgradeableReadLock(Int32)
Tenta inserir o bloqueio no modo atualizável, 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) a aguardar indefinidamente.
Retornos
true se o thread de chamada inseriu o modo atualizável, caso contrário, false.
Exceções
A RecursionPolicy propriedade é NoRecursion e o thread atual já inseriu o bloqueio.
-ou-
O thread atual inicialmente inseriu o bloqueio no modo de leitura e, portanto, tentar entrar no modo atualizável criaria 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 devem encontrar ele.
O valor é millisecondsTimeout negativo, mas não é igual a Infinite (-1), que é o único valor negativo permitido.
O ReaderWriterLockSlim objeto foi descartado.
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 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 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 bloqueia até que esses threads tenham cronometrado ou inserido no modo de gravação e, em seguida, saído dele ou até que o intervalo de tempo limite do próprio thread de chamada expire.
Note
Se um bloqueio permitir a recursão, um thread que inseriu o bloqueio no modo atualizável poderá entrar no modo atualizável de forma recursiva, mesmo que outros threads estejam aguardando para entrar no modo de gravação.
Aplica-se a
TryEnterUpgradeableReadLock(TimeSpan)
Tenta inserir o bloqueio no modo atualizável, 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 a ser esperado ou -1 milissegundos para aguardar indefinidamente.
Retornos
true se o thread de chamada inseriu o modo atualizável, caso contrário, false.
Exceções
A RecursionPolicy propriedade é NoRecursion e o thread atual já inseriu o bloqueio.
-ou-
O thread atual inicialmente inseriu o bloqueio no modo de leitura e, portanto, tentar entrar no modo atualizável criaria 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 devem encontrar ele.
O valor é timeout negativo, mas não é igual a -1 milissegundos, que é o único valor negativo permitido.
-ou-
O valor é timeout maior que Int32.MaxValue milissegundos.
O ReaderWriterLockSlim objeto foi descartado.
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 modo de leitura, mas talvez seja necessário 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 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 bloqueia até que esses threads tenham cronometrado ou inserido no modo de gravação e, em seguida, saído dele ou até que o intervalo de tempo limite do próprio thread de chamada expire.
Note
Se um bloqueio permitir a recursão, um thread que inseriu o bloqueio no modo atualizável poderá entrar no modo atualizável de forma recursiva, mesmo que outros threads estejam aguardando para entrar no modo de gravação.