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

Método Timer.Change (TimeSpan, TimeSpan)

 

Publicado: octubre de 2016

Cambia la hora de inicio y el intervalo entre las distintas invocaciones de método para un temporizador, utilizando TimeSpan valores para medir los intervalos de tiempo.

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

public bool Change(
	TimeSpan dueTime,
	TimeSpan period
)

Parámetros

dueTime
Type: System.TimeSpan

Un TimeSpan que representa la cantidad de tiempo que transcurre antes de invocar el método de devolución de llamada especificado cuando el Timer se construyó. Especifique menos un (-1) milisegundo para evitar que se reinicie el temporizador. Especifique cero (0) para reiniciar inmediatamente el temporizador.

period
Type: System.TimeSpan

Especifica el intervalo de tiempo entre invocaciones del método de devolución de llamada cuando el Timer se construyó. Especifique menos un (-1) milisegundo para deshabilitar la señalización periódica.

Valor devuelto

Type: System.Boolean

true Si el temporizador se actualizó correctamente; de lo contrario, false.

Exception Condition
ObjectDisposedException

El Timer ya se ha eliminado.

ArgumentOutOfRangeException

El dueTime o period parámetro, en milisegundos, es menor que -1.

NotSupportedException

El dueTime o period parámetro, en milisegundos, que es mayor que 4294967294.

El método de devolución de llamada se invoca después dueTime transcurre y posteriormente cada vez el intervalo de tiempo especificado por period transcurre.

Si dueTime es cero (0), se invoca el método de devolución de llamada inmediatamente. Si dueTime es menos uno (-1) milisegundo, nunca se invoca el método de devolución de llamada; el temporizador está desactivado, pero puede volver a habilitarse mediante una llamada a Change y especificando un valor positivo para dueTime.

Si period es cero (0) o negativo (-1) milisegundo, y dueTime es positivo, se invoca el método de devolución de llamada una vez; el comportamiento periódico del temporizador se deshabilita, pero puede volver a habilitar llamando a Change y especificando un valor mayor que cero para period.

El Change método puede llamarse desde el TimerCallback delegar.

En el ejemplo de código siguiente se muestra cómo iniciar un Timer y, después de un número establecido de llamadas, cambiar su período.

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();
        }
    }
}

Plataforma universal de Windows
Disponible desde 8.1
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: