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