![]() |
Delphi-Version: 5
Timer in Schleifen unwirksam ?
Hey Leute,
gibt es irgendeine Möglichkeit, nach einer festgelegten Zeit etwas auszuführen, wenn nebenbei eine Schleife läuft? Ein Timer kann ja während einer Schleife die Botschaft (Timer abgelaufen) des OS nicht abarbeiten, die geschickt wurde. Ein Thread zu erstellen habe ich schon versucht... brachte aber nichts. Im Moment hab ich in jedem Schleifendurchlauf ein "Application.ProcessMessages", damit die Timer-Event-Prozedur auch mal was machen kann, aber bei 1000 Durchläufen pro Sekunde ist das etwas rechenintensiv. Gibt es da einen anderen Befehl, der "stärker" ist, als die Priorität der Schleife, also, dass nach 250ms meine Prozedur erzwungen wird? Danke schon im voraus für eure Antworten :D PS: Arbeite mit Delphi 3 Professional |
AW: Timer in Schleifen unwirksam ?
Lange Schleifen gehören nunmal nicht in den Hauptthread!
Im Notfall kann man aber das Ausführen von ProcessMessages etwas ausbremsen.
Delphi-Quellcode:
Die 200 snd ein von mir festgelegter Wert (100 bis 250 eignen sich dafür, daß die GUI nicht all zu start stockt)
C := GetTickCount + 200;
scheife begin if C < GetTickCount then begin Application.ProcessMessages; C := GetTickCount + 200; end; ... end; Diesen Wert kannst du je nach Timereinstellung noch anpassen. |
AW: Timer in Schleifen unwirksam ?
Eine andere Möglichkeit wäre etwa
Delphi-Quellcode:
wobei processmessages z.B. natürlich auch Clicks auf Buttons verarbeitet, was dann "ChaosMultitasking" auslöst.
for i:=0 to counter do begin
if i and $0F= 0 then application.processmessages; .... { hier wird gearbeitet} ..... end; Gruß K-H |
AW: Timer in Schleifen unwirksam ?
Ich hab es jetzt doch mit einem Thread geschafft, vorher kam ich nicht ganz damit klar, dass der Thread ein Signal sendet, wenn er fertig ist. Jetzt ist es zwar ein bissl uneleganter aber auch durch den Thread wieder etwas besser :D
Jetzt läuft auch der "normale" Timer ordentlich LG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz