Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Método WaitHandle.WaitOne ()

 

Bloqueia o thread atual até o atual WaitHandle recebe um sinal.

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

public virtual bool WaitOne()

Valor de retorno

Type: System.Boolean

true Se a instância atual recebe um sinal.Se a instância atual nunca é sinalizada, WaitOne nunca retorna.

Exception Condition
ObjectDisposedException

A instância atual já foi descartada.

AbandonedMutexException

A espera foi concluída porque um thread foi encerrado sem liberar o mutex.Não, essa exceção é lançada no Windows 98 ou Windows Millennium Edition.

InvalidOperationException

A instância atual é um proxy transparente para um WaitHandle em outro domínio de aplicativo.

AbandonedMutexException é novo no .NET Framework versão 2.0.Nas versões anteriores, o WaitOne método retorna true quando um mutex é abandonado.Um mutex abandonado geralmente indica um erro grave de codificação.No caso de um mutex de todo o sistema, isso pode indicar que um aplicativo foi finalizado abruptamente (por exemplo, usando o Gerenciador de tarefas do Windows).A exceção contém informações úteis para depuração.

O chamador de blocos esse método indefinidamente até a instância atual recebe um sinal.Use esse método para bloquear até um WaitHandle recebe um sinal de outro thread, como é gerado quando uma operação assíncrona for concluída.Para obter mais informações, consulte o IAsyncResult interface.

Chamar essa sobrecarga de método é equivalente a chamar o WaitOne(Int32, Boolean) sobrecarga do método e especificar -1 ou Timeout.Infinite para o primeiro parâmetro e false para o segundo parâmetro.

Substitua este método para personalizar o comportamento de classes derivadas.

O exemplo de código a seguir mostra como usar um identificador de espera para impedir que um processo de encerramento enquanto aguarda um thread em segundo plano sejam concluídas.

using System;
using System.Threading;

class WaitOne
{
    static AutoResetEvent autoEvent = new AutoResetEvent(false);

    static void Main()
    {
        Console.WriteLine("Main starting.");

        ThreadPool.QueueUserWorkItem(
            new WaitCallback(WorkMethod), autoEvent);

        // Wait for work method to signal.
        autoEvent.WaitOne();
        Console.WriteLine("Work method signaled.\nMain ending.");
    }

    static void WorkMethod(object stateInfo) 
    {
        Console.WriteLine("Work starting.");

        // Simulate time spent working.
        Thread.Sleep(new Random().Next(100, 2000));

        // Signal that work is finished.
        Console.WriteLine("Work ending.");
        ((AutoResetEvent)stateInfo).Set();
    }
}

Universal Windows Platform
Disponível desde 4.5
.NET Framework
Disponível desde 1.1
Portable Class Library
Com suporte em: portable .NET platforms
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1
Retornar ao topo
Mostrar: