Timer Constructor (TimerCallback, Object, TimeSpan, TimeSpan)
Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Timer (Constructor) (TimerCallback, Object, TimeSpan, TimeSpan)

 

Inicializa una nueva instancia de la Timer clase mediante TimeSpan valores para medir los intervalos de tiempo.

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

public Timer(
	TimerCallback callback,
	object state,
	TimeSpan dueTime,
	TimeSpan period
)

Parámetros

callback
Type: System.Threading.TimerCallback

Delegado que representa un método que se ejecute.

state
Type: System.Object

Un objeto que contiene información que se utiliza el método de devolución de llamada, o null.

dueTime
Type: System.TimeSpan

La cantidad de tiempo de retraso antes de la callback parámetro invoca a sus métodos. Especifique menos un (-1) milisegundo para evitar que se inicie el temporizador. Especifique cero (0) para iniciar inmediatamente el temporizador.

period
Type: System.TimeSpan

El intervalo de tiempo entre las distintas invocaciones de los métodos que se hace referencia a callback. Especifique menos un (-1) milisegundo para deshabilitar la señalización periódica.

Exception Condition
ArgumentOutOfRangeException

El número de milisegundos en el valor de dueTime o period es negativo y no es igual a Timeout.Infinite, o es mayor que Int32.MaxValue.

ArgumentNullException

El parámetro callback es null.

El delegado especificado por la callback parámetro se invoca después dueTime transcurre y posteriormente cada vez que la period intervalo finaliza el tiempo.

Si dueTime es cero (0), callback se invoca inmediatamente. Si dueTime es menos uno (-1) milisegundo, callback no se invoca, el temporizador se deshabilita, pero puede volver a habilitar llamando a la Change (método).

Dado que la Timer clase tiene la misma resolución que el reloj del sistema, que es aproximadamente 15 milisegundos en sistemas de Windows 7 y Windows 8, la callback delegado se ejecuta a intervalos definidos por la resolución del reloj del sistema si period es menor que la resolución del reloj del sistema. Si period es cero (0) o negativo (-1) milisegundo y dueTime es positivo, callback se invoca una vez; el comportamiento periódico del temporizador está deshabilitado, pero se puede volver a habilitar mediante el Change método.

El método especificado para callback debe ser de reentrada, porque se llama en ThreadPool subprocesos. 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 pone en cola varias veces.

En el ejemplo de código siguiente se muestra cómo crear un TimerCallback delegar e inicializar una nueva instancia de la Timer clase.

using System;
using System.Threading;

class TimerExample
{
    static void Main()
    {
        AutoResetEvent autoEvent     = new AutoResetEvent(false);
        StatusChecker  statusChecker = new StatusChecker(10);

        // Create the delegate that invokes methods for the timer.
        TimerCallback timerDelegate = 
            new TimerCallback(statusChecker.CheckStatus);

        TimeSpan delayTime = new TimeSpan(0, 0, 1);
        TimeSpan intervalTime = new TimeSpan(0, 0, 0, 0, 250);

        // 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(
            timerDelegate, autoEvent, delayTime, intervalTime);

        // When autoEvent signals, change the period to every 
        // 1/2 second.
        autoEvent.WaitOne(5000, false);
        stateTimer.Change(new TimeSpan(0), 
            intervalTime + intervalTime);
        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
{
    int invokeCount, 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();
        }
    }
}

Universal Windows Platform
Disponible desde 8.1
.NET Framework
Disponible desde 1.1
Portable Class Library
Compatible con: portable .NET platforms
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar:
© 2016 Microsoft