Einzelnen Beitrag anzeigen

Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#1

Thread nach Terminate wieder starten

  Alt 2. Okt 2012, 15:11
Hallo zusammen,
ich stehe grad bisschen auf dem Schlauch aber ich wollte hierzu dann doch mal nachfragen.

Wenn ich einen Thread habe, der eine "while not Terminated"-Schleife im Execute Teil abarbeitet und dann aus irgendeinen Grund, terminiert wird, kann man diesen Thread dann irgendwie wieder neustarten?
Die Thread-Instanz ist nach dem Terminate nicht NIL.

Kann man da einfach .Resume wieder ausführen oder ist dies nach einem Terminate-Event nicht mehr möglich?

Delphi-Quellcode:
procedure TMyThread.Execute;
begin
  FreeOnTerminate := False;

  while not Terminated do
  begin
    //Tue irgendwas...
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  MyThread := TMyThread.Create(False); //Execute sofort ausführen
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  MyThread.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MyThread.Terminate;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  //MyThread.Resume;
  //Hier den Thread wieder starten (Execute wieder durchlaufen) obwohl vorher Terminiert
end;
Anbei bisschen Beispielcode.
MyThread ist global deklariert. Reihenfolge der Button Clicks wäre erst 1 dann 2.
Ist nur ein Beispiel und ohne sinnvollen Inhalt

Gruß
Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat