Thema: Delphi Frage zu Threads

Einzelnen Beitrag anzeigen

Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Frage zu Threads

  Alt 26. Aug 2004, 16:44
Hi
Zitat von Rakshasa:
Gerade nach dem .Create, muß ich da nicht irgendwie den Thread auflösen oder tut er das von selbst?!
Da du FreeOnTerminate auf true setzt, gibt er sich selber frei, sobald die Execute-Methode beendet wird.

Allerdings wäre es sauberer das FreeOnTerminate entweder im ButtonClick zu setzen oder in einem überschriebenen Konstruktor im Thread-Objekt.

Setzen im OnClick:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  MeinThread: TMeinThread;
begin
  // Thread angehalten erzeugen, damit er nicht schon zu Ende ist, bevor FreeOnTerminate auf true gesetzt wurde
  MeinThread:=TMeinThread.Create(true);
  MeinThread.FreeOnTerminate := true;
  // Thread-Ausführung starten
  MeinThread.Resume;
end;
Außerdem ist die Variable MeinThread ein bisschen ungünstig deklariert, denn nach dem Ende von ButtonClick hast du keine Möglichkeit mehr, auf das Thread-Objekt zuzugreifen.

[EDIT] Execute in Resume geändert - hatte das Execute noch irgendwie im Hinterkopf ... [/EDIT]
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat