Eigene Timer-Klasse mit Hilfe von QueryPerformanceCounter
-
Hallo,
in meiner Anwendung möchte ich nach einem voreingestellten Zeitintervall (z.B. alle 24 Millisekunden) eine Aktion ausführen.
Zum Thema Genauigkeit von Timern habe ich im Netz eine Menge Hinweise gefunden, von denen die meisten in dem Punkt übereinstimmen, dass das bei Nicht-Echtzeitsystemen 'einfach' nicht möglich ist.
Genauere Zeitmessung als z.B. mit der TTimer-Komponente sei mittels Api-Funktion QueryPerformanceCounter möglich. Siehe nachfolgendes Posting:
LARGE_INTEGER start_ticks, ende_ticks, frequenz; double tick_diff = 0; start_ticks.QuadPart = 0; ende_ticks.QuadPart = 0; QueryPerformanceCounter(&start_ticks); QueryPerformanceFrequency(&frequenz); // ... hier irgendwas machen ... QueryPerformanceCounter(&ende_ticks); // benötigte zeit berechnen tick_diff = ((double) ende_ticks.QuadPart - (double) start_ticks.QuadPart) / frequenz.QuadPart;Hier meine Frage:
Wie muss ich vorgehen, um vergleichbar zum TTimer alle x Millisekunden eine Aktion ausführen zu können?Gruß
Leo
-
Hallo
eigener Thread in dem du laufend die Zeit auswertest
(ob das Sinn macht oder ob es was besseres gibt - keine Ahnung)MfG
Klaus
-
Leo Freitag schrieb:
...denen die meisten in dem Punkt übereinstimmen, dass das bei Nicht-Echtzeitsystemen 'einfach' nicht möglich ist.
Windows = Nicht-Echzeitsystem zum Quadrat! Dem kann man eigentlich nichts mehr hinzufügen.

Ansonsten würde ich das auch über einen Thread versuchen. Allerdings glaube ich nicht, dass das unterm Strich besser oder genauer funktioniert, als mit einer normalen TTimer-Komponente.