Eigentlich werden WM_TIMER Messages erst auf Anfrage erzeugt, aber es gibt Fälle, wo diese dann ignoriert werden und sich in der Message-Queue stauen.
Raymond Chen hat da mal ausführlich was zu geschrieben:
Why is my message queue full of WM_TIMER messages?
Ok, ja, das war nur ein Sonderfall, dass die WM_Timer-Messages in kürzeren Abständen kommen.
Nur selbst wenn der Timer in mind. dem definierten Intervall aufgerufen wird, muss ich in der Ereignisroutine noch die aktuelle Zeit abfragen und speichern.
Sobald der Timer ausgelöst wird, läuft wieder die Zeitspanne zum Auslösen des nächsten Timers unabhängig davon wie lange es dauert, die Ereignisroutine abzuarbeiten.
Wenn also die Zeitspanne zum Auslesen und Speichern der Uhrzeit unterschiedlich lange dauert, könnte das auch zu der festgestellten Abweichung führen.