Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#5

Re: Sleep bei hoher Systemauslastung zu lang

  Alt 24. Sep 2007, 18:44
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
  Mit Zitat antworten Zitat