Classe timer in c++
Categories: C, Source Code, Windows
Tags:
Partendo dall’articolo sui timer in c++, abbiamo creato una semplice classe che fa da wrapper alle funzioni di Windows e che permette facilmente di fare partire un nuovo timer, stopparlo, e decidere quale funzione chiamare quando il tempo del timer è scaduto.

Un semplice esempio di utilizzo della classe è il seguente:
// questo metodo viene invocato quando il timer scade.
void CALLBACK OnTimer(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
{
// azioni da scatenare quando scade il timer
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow)
{
// ...
Timer * timer = new Timer(NULL, (TIMERPROC)OnTimer, 1, 1000);
timer->StartTimer();
// ..
}
Evito di dilungarmi in spiegazioni, perché queste sono già nel post “Timer in c++”, e vi lascio al download:
Download C++ Timer Class. Downloads: 757
Se sei interessato a questo post, potresti anche provare a leggere:
-
No related posts
11 Mag 2007 dzamir
[...] post “Classe Timer in c++” si trova una classe che fa da wrapper a queste [...]
[...] “C++ Timer Class” you can find a wrapper class to these functions (temporary only in italian, it will be translated [...]
Devo inserire in una funzione mebro di una classe, un ciclo for che ad ogni ciclo, attenda k sec prima di iterare. Mi consigli di usare la classe c++ timer?
Oppure mi hanno consigliato qualcosa in merito ad una funzione Sleep…ke differenza c’è?Ma sopratutto ho capito male, o la funzione Sleep “blocca” temporaneamente l’intero programma?
Grazie e scusa se ho usato il modulo commenti come se stessi postando in un forum…..
Non ti preoccupare per il commento, anzi, fa sempre piacere riceverne!
Se devi aspettare all’interno di un ciclo for per tot secondi ti conviene usare la funzione Sleep, specificando il numero di millisecondi. Come dici tu la funzione Sleep è bloccante, ma blocca soltanto il thread dove viene eseguita. Dipende molto da quello che devi fare, per quello che hai scritto la cosa migliore sembra usare lo Sleep. Se poi hai un interfaccia grafica e non vuoi farla bloccare mentre il programma è in Sleep, allora fai un altro thread dove chiami Sleep, altrimenti tutto il programma rimarrà per l’appunto “bloccato”. Se fare più Thread ti viene complicato per la sincronizzazione delle variabili a questo punto forse ti conviene usare la classe Timer ed eseguire il codice che ti interessa dopo che il Timer scade. Spero di averti aiutato, in caso spiegami più nel dettaglio cosa devi fare! 
Devo simulare una centralina preposta alla domotica di base, e mi serviva simulare la variazione di temperatura su un termosifone, dunque graduale(es 5 gradi al minuto).
Cmq rivendendo il codice di “C++ Timer Class” e rileggendo il tuo post più attentamente, credo prorpio che utilizzerò il Timer.Anke xkè mi servirà anke in un secondo momento, sempre nello stesso programma, dunque prima o poi devo implementarlo.Purtroppo nn sono molto esperto e nn ho molto tempo per verificare la Sleep…Cmq per “capire se ho capito”, mi basterà inserire le istruzioni iterate dal ciclo for, nel CALLBACK e impostare un numero di secondi pari a: (numero di ripetizioni)*(secondi di attesa)?
Grazie
P.s.Posso usare la “C++ Timer Class” nel progetto per un esame di Informatica2
(naturalmente specificando da dv proviene…) ?
Ancora Grazie
Tutto il materiale del blog è sotto licenza Creative Commons by-nc-sa, quindi puoi usare senza problemi tutto ciò che trovi se ne attribuisci la provenienza e se non ne fai uso commerciale
Ragazzi, sto provando in tutti i modi ma non riesco a far partire questo benedetto timer.
Io scarico le classi da qui, poi faccio un’ altra classe dove metto il main (al posto di window main) e richiamo lì dentro lo startTimer()… innanzitutto non mi trova stdafx.h (e nella cartella di devc++ c’è) e comunque non mi parte niente!
Qualcuno puo’ darmi una mano?
Salve…scusate l’ignoranza
nn so nemmeno se è questo il posto giusto dove porla…
io utilizzo ubuntu sul quale ho avviato un modello numerico meteorologico solo che ci sono diversi comandi da dare e ripetere ogni volta diventa leggermente avvilente…inoltre a fine processo devo inviare le carte polottate sulla mia pagina web…
mi chiedevo…come devo muovermi???esiste qualche programma che registrando 1 sola volta i comandi me li avvia in automatico (uno al termine dell’altro) sempre alla stessa ora e poi mi avvia filezilla (per esempio) facendomi spedire il contenuto della cartella con le carte?????????
grazie mille
@antonio:
Se ci contatti via email e ci dai qualche dettaglio sui programmi che devi eseguire magari ti possiamo dare un aiutino e scrivere un nuovo articolo su come usare gli script per la shell.
Certo, ti basta fare uno script!
L’email la trovi nella pagina delle info.