Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
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

TimerCallback (Delegado)

Representa el método que controla las llamadas de un Timer.

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

[ComVisibleAttribute(true)]
public delegate void TimerCallback(
	Object state
)

Parámetros

state
Tipo: System.Object
Objeto que contiene información específica de la aplicación relativa al método invocado por este delegado, o null.

Utilice un delegado de TimerCallback para especificar el método llamado por Timer. Este método no se ejecuta en el subproceso que creó el temporizador, se ejecuta en un subproceso del grupo de subprocesos independiente suministrado por el sistema. El delegado de TimerCallback invoca al método una vez después de que haya transcurrido el tiempo de inicio y sigue invocándolo una vez por cada intervalo del temporizador hasta que se llama al método Dispose, o hasta que se llama al método Timer.Change con el valor de intervalo Infinite.

NotaNota

Las devoluciones de llamada se pueden producir una vez que se ha llamado a la sobrecarga del método Dispose(), porque el temporizador pone en cola las devoluciones de llamada para la ejecución de subprocesos del grupo de subprocesos. Puede utilizar la sobrecarga de método Dispose(WaitHandle) para esperar hasta que todas las devoluciones de llamada se hayan completado.

El delegado de temporizador se especifica cuando se construye el temporizador, y no se puede cambiar. El tiempo de inicio de un Timer se pasa en el parámetro dueTime de los constructores Timer, y el período se pasa en el parámetro period. Para ver un ejemplo que muestra la forma de crear y utilizar un delegado de TimerCallback, vea System.Threading.Timer.

En el ejemplo de código siguiente se muestra la forma de crear el delegado utilizado con 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:
© 2014 Microsoft