Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Überwachung von Variablen in einem Thread (https://www.delphipraxis.net/76510-ueberwachung-von-variablen-einem-thread.html)

LokutusvB 5. Sep 2006 16:29


Überwachung von Variablen in einem Thread
 
Hallo Leute,

ich arbeitet an einem Programm, welches einen Thread starten und auch wieder stoppen kann, soweit nix dramatisches ;-). In diesem Thread erfolgt ein Funktionsaufruf mit Rückgabewert 1 oder 0 und eine Auswertung.

Nun soll das ganze zeitgesteuert ablaufen. Wenn die Rückgabe der Funktionen im Thread z.B. 10 Sekunden lang 1 beträgt, soll der Thread automatisch neu gestartet werden. Nur bin ich mir noch ein wenig im unklaren, wie ich das ganze realisieren soll.

ich könnte bei 1 eine Methode über Synchronize aufrufen, welche die Startzeit speichert und bei den nächsten Aufrufen immer vergleicht, wenn zeitspanne zu hoch, dann Neustart des Threads.

Gibt es hierfür eventuell eine elegantere Lösung?

shmia 5. Sep 2006 17:20

Re: Überwachung von Variablen in einem Thread
 
Der Thread arbeitet ja wohl in einer Schleife.
Dann kann er sich doch selbst "neu starten"

Delphi-Quellcode:
Label Anfang;
begin

Anfang:
  Initialisierung; // falls nötig Startwerte setzen

  FLastTime := Now;
  while not Terminated do
  begin
    x := RufeFunktion;
    if x <> 1 then
       FLastTime := Now
    else if (Now-FLastTime)*24.0*60.0*60.0 > 10.0 then
       goto Anfang;
  end;
end;

LokutusvB 5. Sep 2006 17:42

Re: Überwachung von Variablen in einem Thread
 
Hm, verstehe nicht so ganz was der Quelltext mit FlashTime bewirkt.

Der eigentliche Thread muß ständig weiterlaufen, das heisst die Funktion mit Rückgabewert muß auch ständig ausgeführt werden. Und seperat muß üperprüft werden, ob der Rückagbewert 10 Sekunden lang jeweils 1 gewesen ist, dann soll der Thread neu gestartet werden, andersfalls einfach weiterlaufen. ist der Rückgabewert dann wieder mal 1, soll eine erneute Zeitprüfung beginnen.

Wird das mit deiner Routine realilsiert?

Bin in Delphi noch ein Anfänger, deswegen die Nachfrage ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 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