Introduzione ai timer basati su server

Aggiornamento: novembre 2007

I timer basati su server consentono di specificare un intervallo periodico in base al quale verrà generato un evento nell'applicazione. Tale evento sarà quindi gestito in modo da fornire una normale elaborazione. Si supponga ad esempio di disporre di un server importante da mantenere in funzione 24 ore al giorno per sette giorni alla settimana. È possibile creare un servizio che utilizza un timer per controllare periodicamente il server e garantire che il sistema sia in funzione. Se il sistema non risponde, il servizio potrà eseguire un tentativo per riavviare il server o avvisare un amministratore.

Nota:

L'intervallo per i timer su server viene specificato in millisecondi.

Timer su server, timer per Windows e timer di thread

Sono disponibili tre controlli timer in Visual Studio e .NET Framework:

  • Un timer basato su server che può essere aggiunto alla Casella degli strumenti.

  • Un timer basato su Windows che è sempre disponibile nella Casella degli strumenti.

  • Un timer di thread che è disponibile a livello di codice.

Il timer basato su Windows è ottimizzato per l'uso nelle applicazioni Windows Form. Il timer basato su server rappresenta un aggiornamento del timer tradizionale ottimizzato per l'esecuzione in ambienti di server. Il timer di thread è un timer semplice e leggero che utilizza metodi di callback anziché eventi ed è fornito dai thread nei pool di thread.

Nell'architettura Win32 sono disponibili due tipi di thread: thread UI e thread di lavoro. I thread UI restano inattivi per la maggior parte del tempo attendendo l'arrivo di messaggi nei relativi cicli. Una volta ricevuto un messaggio, lo gestiscono e poi attendono l'arrivo del messaggio successivo. I thread di lavoro vengono utilizzati invece per eseguire l'elaborazione in background e non utilizzano cicli di messaggi. Sia il timer per Windows che il timer basato su server vengono eseguiti utilizzando una proprietà Interval. L'intervallo del timer di thread viene impostato nel costruttore Timer. I timer sono progettati con finalità diverse, come evidenziato dalla rispettiva gestione dei thread:

  • Il timer per Windows è progettato per ambienti a thread singolo nei quali l’elaborazione è affidata a thread UI. La precisione dei timer per Windows è limitata a 55 millisecondi. Questi timer tradizionali richiedono che il codice utente disponga di un message pump UI e operi sempre dallo stesso thread o esegua il marshalling della chiamata su un altro thread. Per i componenti COM tale operazione può causare una riduzione delle prestazioni.

  • Il timer basato su server è progettato per l'uso con i thread di lavoro in ambienti multithread. Poiché utilizzano un'architettura differente, i timer basati su server sono potenzialmente più precisi rispetto ai timer per Windows. Possono inoltre spostarsi tra i thread per gestire gli eventi generati.

  • Il timer di thread è utile in scenari in cui non vi è distribuzione di messaggi nel thread. Il timer per Windows, ad esempio, fida sul supporto offerto ai timer dal sistema operativo e in assenza di distribuzione di messaggi nel thread l'evento associato al timer non si verificherà. In questo caso è più indicato l'uso del timer di thread.

Il timer per Windows si trova nello spazio dei nomi System.Windows.Forms, il timer su server nello spazio dei nomi System.Timers e il timer di thread nello spazio dei nomi System.Threading.

Vedere anche

Attività

Procedura: creare istanze di timer basati su server

Procedura: monitorare i timer basati su server

Concetti

Architettura di programmazione dei timer

Timer

Pool di thread gestiti

Riferimenti

Cenni preliminari sul componente Timer (Windows Form)