?
Windows ist kein Echzeitbetriebssystem... Timer sind Nachrichtengesteuert...
Ob und wann ein Timer ausgelöst wird, ist deshalb nicht wirklich vorhersehbar und hängt von den Umständen ab. Und sobald Du irgendwas im Formular machst (verschieben reicht da völlig aus), löst Du eine ganze Menge von Nachrichten aus, die ebenfalls abgearbeitet werden müssen. Wenn Du dann noch Button-Funktionen ausführen willst... In der Zeit, in der eine Funktion läuft, werden die Nachrichten nicht abgearbeitet und der Timer somit viel zu spät ausgelöst.
Durch das Auslagern in einen Thread verhindest Du, dass sich die Kommunikationroutine und die Anwendungsfuntkionen gegenseitig ins Gehege kommen, da beides unabhängig voneinander läuft.