Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Método Monitor.Wait (Object, TimeSpan)

Libera o bloqueio em um objeto e bloqueia o segmento atual até que reacquires o bloqueio. Se o intervalo de tempo limite especificado decorre, o segmento entra em fila pronto.

Namespace:  System.Threading
Assembly:  mscorlib (em mscorlib.dll)

public static bool Wait(
	Object obj,
	TimeSpan timeout
)

Parâmetros

obj
Tipo: System.Object
O objeto no qual a esperar.
timeout
Tipo: System.TimeSpan
TimeSpan que representa a quantidade de tempo para espera antes de segmento entra em fila pronto.

Valor de retorno

Tipo: System.Boolean
true se o bloqueio reacquired antes que os momentos especificados decorrerem; false se o bloqueio reacquired após o tempo passou especificados. O método não retorna até que o bloqueio estado reacquired.

ExceçãoCondição
ArgumentNullException

O parâmetro de obj é null.

SynchronizationLockException

O segmento de chamada não possui o bloqueio para o objeto especificado.

ThreadInterruptedException

O encadeamento que chama Wait é desfeito depois de estado de espera. Isso acontece quando outro segmento chama o método de Interrupt dessa thread.

ArgumentOutOfRangeException

O valor do parâmetro de timeout em milissegundos for negativo e não representa Infinite (– 1 milissegundos), nem é maior do que MaxValue.

Este método não retorna até que reacquires um bloqueio exclusivo no parâmetro de obj .

O thread que possui atualmente o bloqueio no objeto especificado chama esse método para liberar o objeto de modo que outro segmento possa acessá-lo. O chamador é bloqueado para aguardar para reacquire o bloqueio. Este método é chamado quando o chamador necessário esperar uma alteração de estado que ocorre como resultado de operações de outro segmento.

O tempo limite garante que o segmento atual não bloqueie indefinidamente se outro segmento libera o bloqueio sem primeira chamada do método Pulse ou de PulseAll . Também move o thread a fila pronto, ignorando outros segmentos antes deles na fila de espera, de modo que pode reacquire o bloqueio mais brevemente. O thread pode testar o valor de retorno do método de Wait para determinar se reacquired o bloqueio antes do tempo limite. O thread pode avaliar as condições que fez com que incorpora a espera, se necessário e chama o método de Wait novamente.

Quando um segmento chama Wait, libera o bloqueio no objeto e entra em fila de espera de objeto. O segmento seguinte na fila pronta de objeto (se houver) obtém o bloqueio e tem uso exclusivo de objeto. O encadeamento que Wait chamado permanece na fila de espera até um segmento que contém o bloqueio invoke PulseAll, ou é o seguinte na fila e um segmento que contém o bloqueio chama Pulse. No entanto, se timeout decorre antes que outro segmento chame o método de Pulse ou de PulseAll esse objeto, o segmento original é movido para a fila pronto para recuperar o bloqueio.

ObservaçãoObservação

Se TimeSpan que representa – 1 milissegundos é especificado para o parâmetro de timeout , blocos desse método indefinidamente a menos que o suporte de bloqueio chamar Pulse ou PulseAll. Se timeout é 0 milissegundos, que o segmento chama versões de Wait o bloqueio e então imediatamente entra em fila pronto para recuperar o bloqueio.

O chamador executa Wait uma vez, independentemente do número de vezes que Enter foi chamado para o objeto especificado. Conceitualmente, o método de Wait armazena o número de vezes Enter chamado chamador no objeto e chama Exit quantas vezes forem necessárias liberar totalmente o objeto bloqueado. Blocos do chamador na esperar para reacquire o objeto. Quando o chamador reacquires o bloqueio, o sistema chama Enter quantas vezes forem necessárias restaurar a contagem de Enter exceto para o chamador. Versões de Wait de chamada o bloqueio para o objeto especificado; apenas se o chamador é o proprietário de bloqueios em outros objetos, esses bloqueios não são liberados.

ObservaçãoObservação

Um objeto sincronizado contém várias referências, incluindo uma referência para o segmento que contém atualmente o bloqueio, uma referência à fila pronto, que contém os segmentos que estão prontos para obter o bloqueio, e uma referência à fila de espera, que contém os segmentos que estão aguardando a notificação de uma alteração no estado do objeto.

Pulse , PulseAll, e os métodos de Wait devem ser chamados de dentro de um bloco sincronizado de código.

Os comentários para o método de Pulse explicam o que acontece se Pulse é chamado quando nenhum segmento estiver aguardando.

.NET Framework

Com suporte em: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Biblioteca de Classes Portátil

Com suporte em: Biblioteca de Classes Portátil

.NET para aplicativos da Windows Store

Com suporte em: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Contribuições da comunidade

ADICIONAR
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft