Zitat von
rollstuhlfahrer:
HI,
lager doch die Prozedur in einen weiteren Thread aus, den du startest. Dann wartest du entweder auf Fertig oder auf 10 sekunden. Falls die 10 sekunden erreicht sind, beendest du den Thread und weg ist er. Bei Fertig machst du einfach weiter. So muss man sich wenigstens keine Gedanken über Abbruchbedinguingen machen und die Prozedur läuft mit geschätzten 1-2 Durchgängen pro Sekunde schneller.
Bernhard
Das löst das Problem eigentlich nicht, wenn man es sauber haben möchte! Der Thread hilft mir ja nur, damit die Ausführung nicht mein Fenster blockiert und die gesamte CPU-Last (ob benötigt oder nicht) verbraten wird. Die Schleifen "sollten" auch in einem Thread sauber beendet werden.
So wäre es von der Programmierung sauber (egal ob in Thread oder nicht):
Delphi-Quellcode:
procedure TutWas;
var
i, j : integer;
start : LongWord;
begin
i := 0;
j := 0;
start := GetTickCount;
while
( i <= 100 ) and
( GetTickCount - start < 10000 )
do
begin
while
( j <= 100 ) and
( GetTickCount - start < 10000 )
do
begin
// hier kann er was tun
inc( j );
end;
inc( i );
end;
end;
cu
Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)