Einzelnen Beitrag anzeigen

berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

Probleme mit Thread.Terminate verhindern

  Alt 19. Jan 2009, 13:21
Hi!

Kann man sich bei einem Thread auf FreeOnTerminate := True verlassen (z.B. auch wenn bei TMyThread.destructor Destroy; override; eine Exception auftritt)?

Gehen wir in diesem Beispiel davon aus, dass der Thread NICHT auf TMeineKomponente zugreifen muss.

Nehmen wir mal an, der Thread schafft noch was, die dazugehörige TMeineKomponente (der Owner/Erzeuger von dem Thread) wird jetzt freigegeben. Was ist besser:

Thread mit FreeOnTerminate:
Delphi-Quellcode:
destructor TMeineKomponente.Destroy;
begin
  try
    ReloadThread.Terminate;

    // andere Objekte freigeben
  finally
    inherited Destroy;
  end;
end;
oder ohne FreeOnTerminate:
Delphi-Quellcode:
destructor TMeineKomponente.Destroy;
begin
  try
    ReloadThread.Terminate;

    // andere Objekte freigeben

    FreeAndNil(ReloadThread); // Was, wenn der Thread noch nicht fertig gelaufen ist?
  finally
    inherited Destroy;
  end;
end;
  Mit Zitat antworten Zitat