Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Prozedur nach bestimmter Zeit abbrechen (https://www.delphipraxis.net/126564-prozedur-nach-bestimmter-zeit-abbrechen.html)

Sir Rufo 30. Dez 2008 00:16

Re: Prozedur nach bestimmter Zeit abbrechen
 
Zitat:

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

alzaimar 30. Dez 2008 07:20

Re: Prozedur nach bestimmter Zeit abbrechen
 
[quote="Sir Rufo"]
Zitat:

Zitat von rollstuhlfahrer
Falls die 10 sekunden erreicht sind, beendest du den Thread und weg ist er.

Wie geht das genau? :gruebel:

rollstuhlfahrer 30. Dez 2008 18:28

Re: Prozedur nach bestimmter Zeit abbrechen
 
HI

mit dem Beenden hab ich ein bissel suchen müssen.
Also, es geht mit Hilfe von MSDN-Library durchsuchenTerminateThread.

Bernhard

alzaimar 30. Dez 2008 18:49

Re: Prozedur nach bestimmter Zeit abbrechen
 
Aber die Warnungen hast Du Dir schon durchgelesen, ja? Vergiss es. Einen Thread soll man einfach nicht so einfach 'abschießen'. Ein Thread muss schon selbst dafür sorgen, daß er terminiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:07 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz