Zitat:
Vielleicht weiß hier jemand einen Rat,
Die Ursache liegt in der Reaktionszeit von MsgWaitObject(). Diese ist identisch zu einem Sleep() und wrid durch den Tasksheduler von Windows vorgegeben. Das kannst du nicht verändern, es sei denn du setzt die Zeitscheiben die ein Task zugeordnet werden systemweit auf ein kürzeres Interval um, keine gute Idee übrigens.
Die beste Alternative, und auch die richtige, ist es auf Sleep(), Delay() und asynchrones Application.ProcessMessages, zu verzichten. Nehme einen TTimer, setze .Enabled auf False, dann .Interval auf X Millisekunden Warteseit, und dann .Enabled wieder auf True. Dann läuft deine Anwendung so weiter wi gewohnt und nach X Millisekunden lösst der TTimer ein Event aus. Innerhalb dessen dann .Enabled auf False setzen und die jeweilige Aktion ausführen.
Sollten längerdauerende Berechnungen gemacht werden die quasi im Hintergrund ausgeführt werden sollen dann einfach mal über TThread nachdenken.
Gruß Hagen