Area di riferimento
- Implementing service processes, threading, and application domains in a .NET Framework application
- Develop multithreaded .NET Framework applications
- Timer class, TimerCallback delegate
Timer
L'oggetto Timer del namespace System.Threading è il miglior timer da usare quando si vogliono eseguire in background dei task periodici.
Quando si costruisce una istanza di un oggetto Timer si specificano le seguenti informazioni:
- Metodo da richiamare periodicamente (deve rispettare la firma del delegate TimerCallback )
- Informazioni da passare al metodo di callback
- Tempo di attesa prima di invocare per la prima volta il metodo di callback
- Periodo di tempo tra due chiamate consecutive del metodo di callback
Ecco un esempio di utilizzo:
class Program
{
static void Main(string[] args)
{
// Costruisco un nuovo timer
Timer timer = new Timer(timer_callback, "Ciao a tutti", 1000, 2000);
Console.WriteLine("{0}: {1}", DateTime.Now.ToLongTimeString(), "Creazione Timer");
Console.ReadKey();
// Rilascia le risorse allocate al Timer.
// (necessario per evitare che il garbage collector distrugga l'oggetto timer non più referenziato)
timer.Dispose();
}
// Metodo che sarà eseguito periodicamente
static void timer_callback(object state)
{
string messaggio = state as string;
Console.WriteLine("{0}: {1}", DateTime.Now.ToLongTimeString(), messaggio);
}
}
Output del programma:
22.43.27: Creazione Timer
22.43.28: Ciao a tutti
22.43.30: Ciao a tutti
22.43.32: Ciao a tutti
22.43.34: Ciao a tutti
22.43.36: Ciao a tutti