Hi, Präzision ist abhängig von.
1. Präemtives Multitasking, ein Prozess bekommt folgende Rechenzeit vom
Win32 Task-Scheduler zugeteilt.
Bei Desktop
OS 15 ms. Server
OS 30 msec
D.h. Je mehr Prozesse die Zugeteilte Rechenzeit auch verbrauchen, desto weniger genau arbeitet das Timerevent.
Win32 ist kein Echtzeit-Betriebssystem.
2. Auslastung und Prioritätsboost der einzelnen Prozesse und Threads im System sind zu berücksichtigen.
timeSetEvent bei Verwendung einer Callback Funktion und Priority TIME_CRITICAL des Mainprozesses, ergibt die
größte Genauigkeit, ohne zusätzlich zuviel an Rechenzeit zu verbrauchen.
Parameter uResolution berücksichtigen.
Also eine Genauigkeit im USER-Mode kleiner 15 msec ist nicht ohne die Altagstauglichkeit des
OS einzuschränken
möglich. Ring0 implementierungen da mit Delphi nicht ohne Kopfstände möglich, seien mal hinten angestellt.
MMRESULT timeSetEvent(
UINT uDelay,
UINT uResolution,
LPTIMECALLBACK lpTimeProc,
DWORD dwUser,
UINT fuEvent
);
lg.