Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

Re: Prozedur nach bestimmter Zeit abbrechen

  Alt 30. Dez 2008, 00:16
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)
  Mit Zitat antworten Zitat