Entwickler-Ecke

Windows API - Timer mit weniger als einer MS


Hendrik - Di 08.07.03 20:03
Titel: Timer mit weniger als einer MS
Hi,

ich müsste in meinem Proggi irgendwie eine aktion nach weniger als einer Millisekunden (genau 0.825 ms) ausführen. Wie könnte ich das denn machen? Mit einem Timer kann ich das ja nicht machen...


Delete - Di 08.07.03 20:08

Nimm einen Multimediatimer. Und kuck dir in diesem Zusammenhang auch mal QueryPerformanceCounter und QueryPerformanceFrequency an.

Oder nimm einen Thread und leg in jeweils mit Sleep die benötigten Millisekunden lahm.


tommie-lie - Di 08.07.03 20:50

Hendrik hat folgendes geschrieben:
weniger als einer Millisekunden (genau 0.825 ms) ausführen.

Luckie hat folgendes geschrieben:
Oder nimm einen Thread und leg in jeweils mit Sleep die benötigten Millisekunden lahm.

Habe ich was nicht mitbekommen oder ist dein Vorschlag ein wenig... falsch, Luckie?
Und wo nimmt man einen Multimediatimer her? Ich finde ihn zumindest nicht bei den Stnadard-Delphi-Komponenten...

Aber ein Thread ist schon ganz sinnvoll, darin kann man mit der vom Luckie erwähnten PerformanceCounter in einer Endlosschleife abfragen, wieviel Zeit vergangen ist (die Taktzeit des Performancecounter hängt zwar von der verwendeten Hardware ab, 0,825 ms sollten aber auf jedem System zu erreichen sein, wenn es nicht gerade ein 10 Jahre altes 386er-Board ist...). Ist die gewünschte Zeit erreicht, schickt entweder der Thread eine Message an dein Fenster, die du abfangen kannst (wie ein Timer), oder macht selber was.


Delete - Di 08.07.03 20:55

Ach halt, das soll ja unter einer Millisekunde sein. Dan geht sleep natürlich nicht.

Die DirectX Kompos für Delphi haben einen dabei. Gibt es aber auch so bei Torry, denke ich.