AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Möglichkeit um Threads zu reseten ?

Ein Thema von pH1L · begonnen am 19. Jul 2008 · letzter Beitrag vom 20. Jul 2008
Antwort Antwort
pH1L

Registriert seit: 25. Jun 2006
11 Beiträge
 
Turbo Delphi für Win32
 
#1

Möglichkeit um Threads zu reseten ?

  Alt 19. Jul 2008, 20:21
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
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Möglichkeit um Threads zu reseten ?

  Alt 19. Jul 2008, 20:33
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??!!
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
pH1L

Registriert seit: 25. Jun 2006
11 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Möglichkeit um Threads zu reseten ?

  Alt 19. Jul 2008, 21:17
Also wenns so ausschaut:

Code:
procedure TAsdThread.Execute;
begin
  proc1(parameter);
  proc2(parameter);
  if func3(parameter) then Reset;
  proc4(parameter);
end;
dann ginge es so, das stimmt schon :

Code:
procedure TAsdThread.Execute;
begin
  repeat
    proc1(parameter);
    proc2(parameter);
  until not func3(parameter);
  proc4(parameter);
end;
Danke für die schnelle Antwort
mfg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

Re: Möglichkeit um Threads zu reseten ?

  Alt 20. Jul 2008, 08:55
ok, so mit 'nem repeat-until sieht es natürlich schöner/übersichtlicher aus,
aber nur der Vollständigkeit halber:
Zitat:
wie genau das funzt hab ich jetzt auch nicht mehr im kopf, steht aber bestimmt in der delphi hilfe...
jupp, steht da irgendwoe ... siehe Delphi-Referenz durchsuchengoto?
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 ^_^
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: Möglichkeit um Threads zu reseten ?

  Alt 20. Jul 2008, 09:34
Hi,

Ich würde das ganze so machen:
Delphi-Quellcode:
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.
Ich denke, so ist es noch eleganter gelöst.

Grüße Sven
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Möglichkeit um Threads zu reseten ?

  Alt 20. Jul 2008, 10:55
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

Re: Möglichkeit um Threads zu reseten ?

  Alt 20. Jul 2008, 11:03
Jo, das wäre sogar noch besser. Würde dann so aussehen:

Delphi-Quellcode:
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;
Grüße Sven
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:38 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