Timer Genauigkeit ist mies oder?
-
Hallo
Ich hab das problem das ich alle 30 Sekunden eine Messung starten muss, dazu benutze ich ein Timer Event. Funktioniert auch alles gut wenn der rechner nicht zusätzlich arbeitet. Der Zeitabstand bleibt konstant bei 30 Sekunden und dies auch über 10 Minuten.
Aber wenn man den Rechner belastet dann wird aus aus 30 Sekunden 30.5 Sekunden und diese addieren sich über die lange Zeit. So das ich am Schluss einige Sekunden zu spät bin.
Warum arbeitet der Timer nicht gleichmäßiger?
Und gibts eine bessere Lösung.Meine erste Idee wäre einen Timer mit 1 Sekunde laufen zu lassen und dort immer auf die Systemzeit zu gucken, diese sollte ja wohl stabil bleiben.
Dadurch hab ich aber jede Sekunde arbeit.Wisst ihr was besseres?
Gruß heiko
-
Einen Thread + QueryPerformanceFrequency + QueryPerformanceCounter sollte gut gehen.
-
Nemesyzz schrieb:
Einen Thread + QueryPerformanceFrequency + QueryPerformanceCounter sollte gut gehen.
das wird aber in 100 % prozessorauslastung enden. oder ?
-
sowas aehnliches brauchte ich auch habe aber keine ahnung wie.
bei mir geht es nicht vorrangig um den timer sondern um die verwendung von threads. tipps waeren also schoen :))
-
sowas aehnliches brauchte ich auch habe aber keine ahnung wie.
bei mir geht es nicht vorrangig um den timer sondern um die verwendung von threads. tipps waeren also schoen :))
-
zu elchen Thread variante brauchst du Infos? Worker oder GUI Thread
Zum Worker Thread kann ich dir was sagen. diesen verwende ich in dem programm schon.
-
=? schrieb:
Nemesyzz schrieb:
Einen Thread + QueryPerformanceFrequency + QueryPerformanceCounter sollte gut gehen.
das wird aber in 100 % prozessorauslastung enden. oder ?
So eine hohe Genauigkeit brauch ich nicht, nur die Zeit darf nicht nach mehreren Stunden mehr als eine Sekunde auseinader laufen. Ich denke ich werd die Variante mit dem 1 Sekunden Timer mal verusuchen.
Die Zeit in der OnTimer Funktion wird auf die Zeit aufgeschlagen oder? So was hab ich auf einer anderen Seite gelesen.
Siehe http://home.wtal.de/kschnei/hightim.html
Können die MS keinen besseren Timer Funktion programmieren?
-
Das liegt nicht an der MFC, sondern an Windows. Der Timer ist nunmal nicht das genaueste.
Warum benutzt du nicht einfach deinen 30Sekunden-Timer und speicherst die Startzeit in einer statischen Variable? Dann kannst du bei jedem Timer-Event die Abweichung berechnen und den Timer so neu starten, dass er auch nach Stunden nicht abweicht.
-
onidle und gettickcount wäre ne lösung

-
heiko schrieb er haette infos zu threads :
schick mal ein paar links
danke.
-
Infos zu Threads findet man in der FAQ.
CWinThread == Threadklasse von MFC