Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Timeout für Prozeduren/Funktionen (https://www.delphipraxis.net/52056-timeout-fuer-prozeduren-funktionen.html)

DirectFromHell 23. Aug 2005 06:18


Timeout für Prozeduren/Funktionen
 
Hi,

ich möchte mit einem Programm eine rekursive Berechnung anstellen. Ich hatte mir das aber so gedacht, dass ich mir nur anzeigen lasse wieviele Berechnungen mein Rechner in einer Sekunde schafft. Dafür bräuchte ich eine Art Prozedur Timeout, der die PR/FU nach 1 Sekunde beendet. Sowas wäre auch ganz praktisch, wenn der Rechner dabei mal hängen bleibt. Weil er nach dem Timeout ja zurück kommen müsste.
Nur leider habe ich keine Ahnung wie ich sowas machen könnte :(
Ich dachte, dass sowas eventuell mit Threads gemacht werden müsste, habe aber einfach noch nicht die Ahnung wie
Ich bedanke mich für alle Antworten im vorraus

Kroko1999 23. Aug 2005 06:26

Re: Timeout für Prozeduren/Funktionen
 
setze bei Start einen Timer, der dann nach der 1s (etc) eine Boolean-Variable auf False setzt und werte diese in der Proc/Func aus!
zum Beispiel

RavenIV 23. Aug 2005 07:12

Re: Timeout für Prozeduren/Funktionen
 
erst einmal:
wenn du die funktion nur eine sekunde laufen lässt, kommen da keine statistisch verwertbaren daten raus.
da musst du schon mehrere (mehr als 50) sekunden laufen lassen und das nachher auf eine sekunde runterrechnen.

und ich würde das mit einem timer und verschiedenene threads machen.
der timer schlägt irgendwann zu und setzt "terminated" für den rechen-thread auf True.
der rechen-thread wertet dies aus und beendet sich ordnungsgemäss.
im haupt-thhread kannst du dann die auswertung machen.


gruessle

Unplugged 23. Aug 2005 11:30

Re: Timeout für Prozeduren/Funktionen
 
Um den Thread nicht zu beenden, könnte man eigentlich auch über Suspend arbeiten.

Also im Timerereignis den Thread auf Suspend setzen, die Variable auslesen, mit der Berechnungszahl und dann den Durchschnittswert pro Sekunde berechnen. Die Variable dann auf 0 setzen und den Thread Resumen.
Und im Thread inkrementierst du die Variable halt ganz normal pro Rekursion.


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