Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Timer.Change (TimeSpan, TimeSpan)

 

Data di pubblicazione: ottobre 2016

Modifica l'ora di inizio e l'intervallo tra le chiamate di metodo di un timer, usando TimeSpan i valori per misurare gli intervalli di tempo.

Spazio dei nomi:   System.Threading
Assembly:  mscorlib (in mscorlib.dll)

public bool Change(
	TimeSpan dueTime,
	TimeSpan period
)

Parametri

dueTime
Type: System.TimeSpan

Oggetto TimeSpan che rappresenta la quantità di tempo di attesa prima di richiamare il metodo di callback specificato quando il Timer è stato costruito. Specificare il valore uno negativo (-1) in millisecondi per impedire il riavvio del timer. Specificare zero (0) per riavviare il timer immediatamente.

period
Type: System.TimeSpan

L'intervallo di tempo tra le chiamate del metodo di callback specificato quando il Timer è stato costruito. Specificare il valore uno negativo (-1) in millisecondi per disabilitare la segnalazione periodica.

Valore restituito

Type: System.Boolean

true Se il timer è stato aggiornato correttamente; in caso contrario, false.

Exception Condition
ObjectDisposedException

Il Timer è già stato eliminato.

ArgumentOutOfRangeException

Il dueTime o period parametro, in millisecondi, è minore di -1.

NotSupportedException

Il dueTime o period parametro, in millisecondi, è maggiore di 4294967294.

Il metodo di callback viene richiamato una volta dueTime allo scadere dell'intervallo e successivamente ogni volta l'intervallo di tempo specificato da period scade.

Se dueTime è zero (0), il metodo di callback viene richiamato immediatamente. Se dueTime è negativo (-1) in millisecondi, il metodo di callback non viene mai richiamato; il timer è disattivato, ma può essere riattivato chiamando Change e specificando un valore positivo per dueTime.

Se period è zero (0) o negativo (-1) in millisecondi, e dueTime è positivo, il metodo di callback viene richiamato una volta; il comportamento periodico del timer viene disabilitato, ma può essere riattivato chiamando Change e specificando un valore maggiore di zero per period.

Il Change metodo può essere chiamato dal TimerCallback delegare.

Esempio di codice riportato di seguito viene illustrato come avviare un Timer e, dopo un determinato numero di chiamate, modificarne il periodo.

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
Disponibile da 8.1
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: