¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Timer (Constructor) (TimerCallback, Object, Int32, Int32)
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

Timer (Constructor) (TimerCallback, Object, Int32, Int32)

Inicializa una nueva instancia de la clase Timer utilizando un entero de 32 bits con signo para medir los intervalos de tiempo.

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

public Timer(
	TimerCallback callback,
	Object state,
	int dueTime,
	int period
)

Parámetros

callback
Tipo: System.Threading.TimerCallback
Delegado de TimerCallback que representa un método que se debe ejecutar.
state
Tipo: System.Object
Objeto que contiene información que debe utilizar el método de devolución de llamada, o null.
dueTime
Tipo: System.Int32
Período de tiempo de retraso, en milisegundos, antes de que se invoque a callback. Especifique Timeout.Infinite para evitar que se inicie el temporizador. Especifique cero (0) para iniciar inmediatamente el temporizador.
period
Tipo: System.Int32
Intervalo de tiempo, en milisegundos, entre las distintas invocaciones de callback. Especifique Timeout.Infinite para deshabilitar la señalización periódica.

ExcepciónCondición
ArgumentOutOfRangeException

El parámetro dueTime o period es negativo y no es igual a Infinite.

ArgumentNullException

El valor del parámetro callback es null.

El delegado que especifica el parámetro callback se invoca una vez que transcurre el intervalo dueTime y, a partir de entonces, cada vez que transcurre el intervalo de tiempo period.

[Visual Basic]

NotaNota

Los usuarios de Visual Basic pueden omitir el constructor TimerCallback y utilizar simplemente el operador AddressOf al especificar el método de devolución de llamada. Visual Basic llama automáticamente al constructor del delegado correcto.

Si dueTime es cero (0), se invoca a callback inmediatamente. Si dueTime es Timeout.Infinite, no se invoca a callback; el temporizador queda deshabilitado, pero se puede volver a habilitar llamando al método Change.

Si period es cero (0) o Infinite y dueTime no es Infinite, se invoca a callback una vez. El comportamiento periódico del temporizador queda deshabilitado, pero se puede volver a habilitar mediante el método Change.

El método especificado para callback debe ser de reentrada, puesto que se le llama en los subprocesos de ThreadPool. El método se puede ejecutar simultáneamente en dos subprocesos del grupo de subprocesos si el intervalo del temporizador es menor que el tiempo necesario para ejecutar el método, o si todos los subprocesos del grupo de subprocesos están en uso y el método se sitúa varias veces en la cola.

En el ejemplo de código siguiente se muestra cómo se crea un delegado de TimerCallback y se inicializa una nueva instancia de la clase Timer.


using System;
using System.Threading;

class TimerExample
{
    static void Main()
    {
        // Create an event to signal the timeout count threshold in the
        // timer callback.
        AutoResetEvent autoEvent     = new AutoResetEvent(false);

        StatusChecker  statusChecker = new StatusChecker(10);

        // Create an inferred delegate that invokes methods for the timer.
        TimerCallback tcb = statusChecker.CheckStatus;

        // Create a timer that signals the delegate to invoke 
        // CheckStatus after one second, and every 1/4 second 
        // thereafter.
        Console.WriteLine("{0} Creating timer.\n", 
            DateTime.Now.ToString("h:mm:ss.fff"));
        Timer stateTimer = new Timer(tcb, autoEvent, 1000, 250);

        // When autoEvent signals, change the period to every
        // 1/2 second.
        autoEvent.WaitOne(5000, false);
        stateTimer.Change(0, 500);
        Console.WriteLine("\nChanging period.\n");

        // When autoEvent signals the second time, dispose of 
        // the timer.
        autoEvent.WaitOne(5000, false);
        stateTimer.Dispose();
        Console.WriteLine("\nDestroying timer.");
    }
}

class StatusChecker
{
    private int invokeCount;
    private int  maxCount;

    public StatusChecker(int count)
    {
        invokeCount  = 0;
        maxCount = count;
    }

    // This method is called by the timer delegate.
    public void CheckStatus(Object stateInfo)
    {
        AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
        Console.WriteLine("{0} Checking status {1,2}.", 
            DateTime.Now.ToString("h:mm:ss.fff"), 
            (++invokeCount).ToString());

        if(invokeCount == maxCount)
        {
            // Reset the counter and signal Main.
            invokeCount  = 0;
            autoEvent.Set();
        }
    }
}


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

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