Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
[C#] Gestione Timer
venerdì 11 maggio 2007 - 10.53
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
breton79
Profilo
| Newbie
26
messaggi | Data Invio:
ven 11 mag 2007 - 10:53
Buongiorno a tutti.
Volevo approfondire l'argomento dei Timer nel FW 2.0.
Ho scritto la versione del FW perchè non sò se è cambiato qualcosa rispetto alla versione precedente.
Utilizzo 3 Timer in una applicazione, tutti hanno lo stesso intervallo di attivazione, e vorrei sapere come il C# gestisce l'insieme dei timer.
E' interessante conoscere l'esatta esecuzione di codice che viene avviato dai timer, e se i timer si possono sovrapporre e creare problemi di incongruenze.
Io ho provato a darmi una risposta, ma non credo sia molto corretta...
Uso la classe Timer inclusa in System.Windows.Forms e da quello che ho capito il timer non funziona come thread, ma come evento. Se fosse così, penso che tutti gli eventi che sono stati generati ma non eseguiti dal sistema, vengono messi in coda ed eseguiti in sequenza (immagino un funzionamento di tipo FIFO) uno dopo il termine dell'altro.
Se ad esempio ho una sintassi del tipo:
....
// Tutti i timer sono impostati allo stesso intervallo
timer1.Enabled = false
timer2.Enabled = false
timer3.Enabled = false
...
timer1.Enabled = true
timer2.Enabled = true
timer3.Enabled = true
...
accade che il sistema esegue "timer1" e mette in coda "timer2" e "timer3", al termine di "timer1" viene eseguito il codice di "timer2" e così via....
Detto questo volevo sapere se in tutto questo discorso c'è qualcosa di vero
.
Grazie
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 11 mag 2007 - 16:09
>Detto questo volevo sapere se in tutto questo discorso c'è qualcosa
>di vero
Non mi risulta, una volta impostato un intervallo e mandato in esecuzione i Timer eseguono il codice contemporaneamente indipendentemente uno dall'altro e non prima uno poi l'altro. Naturalmente dipende che intervalli si mettono. Se uno lo metti con intervallo ogni 500 millisecondi e l'altro ogni 1000, ogni due tick del primo eseguiranno il codice contemporaneamente. Poi sul contemporaneamente ci sarebbe da discutere.... come sai con una sola CPU le istruzioni vengono comunque eseguite una dietro l'altra sequenzialmente. Solo con CPU multicore o macchine SMP il codice può essere eseguito effettivamente in modo simultaneo grazie alle pipeline aggiuntive.
ciao
David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
munissor
Profilo
| Senior Member
270
messaggi | Data Invio:
sab 12 mag 2007 - 11:05
Il sistema operativo gestisce i tuoi timer, poi allo scadere del tempo viene inviato un messaggio WM_TIMER sulla coda dei messaggi del thread che ha creato il timer.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !