Möglichkeit um Threads zu reseten ?
Hi,
Ich mache gerade etwas mit Threads und habe mich gefragt, ob man einen Thread (es geht um das Thread-Objekt) reseten kann, so dass der Code am Anfang der Execute-Prozedur wieder ausgeführt wird. Aber nicht von außen über Terminate, sondern vom Thread aus.. Ich weiß das stinkt ein wenig nach GOTO von Basic, und schlechter Programmierstil, aber es würde gerade einiges vereinfachen. mfg und Danke im Vorraus |
Re: Möglichkeit um Threads zu reseten ?
sowas wi goto gibts auch in delphi, nennt sich hier aber label, muss ein label an einer bestimmten stelle im quellcode machen und dann hinnspringen, wie genau das funzt hab ich jetzt auch nicht mehr im kopf, steht aber bestimmt in der delphi hilfe...
aber was mich wundert wieso keine schleife?? währe doch das einfachste oder nicht?? dann kommt es ja auch noch drauf an, was der thread macht, denn du kannst ihn ja beenden und einfach neustarten??!! |
Re: Möglichkeit um Threads zu reseten ?
Also wenns so ausschaut:
Code:
dann ginge es so, das stimmt schon :wall: :
procedure TAsdThread.Execute;
begin proc1(parameter); proc2(parameter); if func3(parameter) then Reset; proc4(parameter); end;
Code:
Danke für die schnelle Antwort :wink:
procedure TAsdThread.Execute;
begin repeat proc1(parameter); proc2(parameter); until not func3(parameter); proc4(parameter); end; mfg |
Re: Möglichkeit um Threads zu reseten ?
ok, so mit 'nem repeat-until sieht es natürlich schöner/übersichtlicher aus,
aber nur der Vollständigkeit halber: Zitat:
Delphi-Quellcode:
procedure TAsdThread.Execute;
label MyReset; begin MyReset: proc1(parameter); proc2(parameter); if func3(parameter) then goto MyReset; proc4(parameter); end; // normaler Weisewürde man ja proc1 und proc2 nicht einrücken // aber so erkennt man zumindestens die Schleife ^_^ |
Re: Möglichkeit um Threads zu reseten ?
Hi,
Ich würde das ganze so machen:
Delphi-Quellcode:
Ich denke, so ist es noch eleganter gelöst.
procedure TAsdThread.Execute;
begin while not Terminated do begin proc1(parameter); proc2(parameter); if func3(parameter) then Continue; proc4(parameter); break; end; end; // Delphi Hilfe: // Continue = Setzt die Programmausführung mit dem nächsten Durchlauf einer for-, while- oder repeat-Schleife fort. // Break = Verlässt eine for-, while- oder repeat-Schleife. Grüße Sven |
Re: Möglichkeit um Threads zu reseten ?
Danke SvB, damit hat der goto-Quark (der hier wirklich deplaziert ist) ein Ende.
Man könnte es auch über ein If-Else lösen, denn das wäre vermutlich logscher, aber ein Continue ist ein modernes Goto. |
Re: Möglichkeit um Threads zu reseten ?
Jo, das wäre sogar noch besser. Würde dann so aussehen:
Delphi-Quellcode:
Grüße Sven
procedure TAsdThread.Execute;
begin while not Terminated do begin proc1(parameter); proc2(parameter); if not func3(parameter) then begin proc4(parameter); break; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 Uhr. |
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