Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

WaitHandle.WaitOne (Método) (Int32)

Bloquea el subproceso actual hasta que el objeto WaitHandle actual recibe una señal, utilizando un entero de 32 bits con signo para especificar el intervalo de tiempo.

Espacio de nombres:  System.Threading
Ensamblado:  mscorlib (en mscorlib.dll)

public virtual bool WaitOne(
	int millisecondsTimeout
)

Parámetros

millisecondsTimeout
Tipo: System.Int32
Número de milisegundos de espera o Timeout.Infinite (-1) para esperar indefinidamente.

Valor devuelto

Tipo: System.Boolean
true si la instancia actual recibe una señal; en caso contrario, false.

ExcepciónCondición
ObjectDisposedException

La instancia actual ya se ha eliminado.

ArgumentOutOfRangeException

millisecondsTimeout es un número negativo distinto de -1 que representa un tiempo de espera infinito.

AbandonedMutexException

La espera finalizó porque un subproceso se cerró sin liberar una exclusión mutua. Esta excepción no se genera en Windows 98 ni en Windows Millennium.

InvalidOperationException

La instancia actual es un proxy transparente para un objeto WaitHandle en otro dominio de aplicación.

Si millisecondsTimeout es cero, el método no se bloquea. Comprueba el estado del identificador de espera y vuelve inmediatamente.

El llamador de este método se bloquea hasta que la instancia actual recibe una señal o se produce un tiempo de espera. Utilice este método para bloquear hasta que WaitHandle reciba una señal de otro subproceso, como el que se genera cuando finaliza una operación asincrónica. Para obtener más información, vea la interfaz IAsyncResult.

Reemplace este método para personalizar el comportamiento de las clases derivadas.

Llamar a la sobrecarga de este método equivale a llamar a la sobrecarga de WaitOne(Int32, Boolean) y especificar false para exitContext.

En el ejemplo de código siguiente se muestra la forma de utilizar un identificador de espera para mantener un proceso sin terminar mientras espera que finalice la ejecución de un subproceso en segundo plano.


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.
        if(autoEvent.WaitOne(1000))
        {
            Console.WriteLine("Work method signaled.");
        }
        else
        {
            Console.WriteLine("Timed out waiting for work " +
                "method to signal.");
        }
        Console.WriteLine("Main 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();
    }
}


.NET Framework

Compatible con: 4.5, 4, 3.5 SP1, 3.0 SP2, 2.0 SP2

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft