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
Dettaglio su oggetto TIMER di windows
lunedì 20 gennaio 2014 - 16.11
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
.NET 4.0
|
Windows XP
|
Visual Studio 2010
|
Visual Studio Express
yag
Profilo
| Junior Member
95
messaggi | Data Invio:
lun 20 gen 2014 - 16:11
salve
vorrei sapere se il metodo start del timer riazzera il contatore oppure parte dal conteggio corrente
mi spiego meglio
io voglio che l'evento sia chiamata ogni 10secondi
se per qualsiasi motivo le operazioni eseguite dentro il mio metodo superano i 10secondi io vorrei alla fine delle operazioni far partire immediatamente il nuovo evento e cosi via...
io usavo un pseduo codice del tipo
evento...
timer.stop();
fai tante cose....
timer.Start();
fine evento
ma non sono sicuro che questo faccio al mio caso...
grazie
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
lun 20 gen 2014 - 16:28
Ciao.
Il timer dovrebbe essere asincrono nel senso che allo scatenarsi dell'evento Tick il conteggio continua ad andare avanti.
Quest fa si che se hai messo un valore di interval che ti fa scatenare ogni 10 secondi, se nell'evento Tick non fermi il timer questo una vosta scatenato l'evento riparte da 0 e riconta i 10 secondi. Se nel frattempo non hai terminato quello che hai messo nell'evento, allora te lo richiama e mette in coda nello stack delle chiamate quello che c'e nell'evento.
Cristian Barca
yag
Profilo
| Junior Member
95
messaggi | Data Invio:
lun 20 gen 2014 - 17:07
Ok quindi ristart il conteggio
come potrei fare per controllare alla chiusura dell'evento se sono passati più
secondo di quelle dell'intervallo ?
cioè se le mie elaborazioni sono durate più di timer.intervall richiamare appunto l'evento in maniera forzata....
è possibile ?
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
lun 20 gen 2014 - 17:24
Si e' possibile.
Devi solo fare una piccola modifica concettuale.
Imposta il valore Interval del timer a 1000 (ossia 1 secondo)
Dichiarati una variabile globale (o statica in program) di tipo intero che inizializzi a 0
Dichiarati un'altra variabile di tipo booleano che userai come flag per controllare se l'evento e' in corso oppure no e la valorizzi a false
nell'evento Tick del timer incrementi il valore di questa variabile. subito dopo controlli se il valore della variabile e' uguale a 10.
Se è uguale a 10 e il flag è FALSE, allora imposti il flag a true; resetti il valore della variabile a 0 e avvii il tuo metodo complesso.
intanto il timer continua a fare il tick ogni secondo e incrementera' la variabile intera. Anche se questa arriva a 10, troverà il flag a true e quindi non avvierà il metodo complesso ma continuerà a contare.
Nel metodo complesso alla fine di questo controlla il valore valore della variabile intera e se e' maggiore di 10, azzeri la variabile e riavvii il metodo complesso. Solo all'uscita del metodo complesso (ossia quando al termine la variabile intera è minore di 10) imposti a False il tuo flag di controllo.
Cristian Barca
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
ven 24 gen 2014 - 14:04
Se ho ben capito il caso, consiglierei di usare un timer impostato ad un valore non troppo aggressivo, qualcosa tipo qualche centinaio di millisecondi. Il lavoro del timer sarà quello di controllare l'orologio di sistema, controllando se la differenza (timespan) tra questa e un valore date memorizzato al momento dell'ultima chiamata alle procedure previste, supera i 10 secondi. Se si superano, si rivalorizza la variabile per il confronto con l'ora attuale (date.now) e si lanciano le procedure (quelle da fare nell'evento tick, per capirsi). Se necessario, si può impedire, appunto con una variabile booleana, di procedere se non si vuole interrompere un'altra procedura in esecuzione. In questo caso la condizione per lanciare le procedure sarà: timespan>10 AND FlagPossoLanciareProcedure=True
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 !