AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Probleme mit Thread.Terminate verhindern
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Thread.Terminate verhindern

Ein Thema von berens · begonnen am 19. Jan 2009 · letzter Beitrag vom 19. Jan 2009
Antwort Antwort
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#1

Probleme mit Thread.Terminate verhindern

  Alt 19. Jan 2009, 12: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
alzaimar
(Moderator)

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

Re: Probleme mit Thread.Terminate verhindern

  Alt 19. Jan 2009, 18:46
Wenn du die Methode 'Terminate' aufrufst, wird eigentlich nur die Eigenschaft 'Terminated' auf True gesetzt. Der Thread selbst bestimmt, wann er fertig ist. Du kannst aber auf den Thread per 'WaitFor' warten, so etwa:
Delphi-Quellcode:
MyThread.Terminate;
MyThread.WaitFor;
MyThread.Free;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Probleme mit Thread.Terminate verhindern

  Alt 19. Jan 2009, 18:48
Ah, WaitFor kannte ich noch garnicht. Das beantwortet die Frage, vielen Dank!
  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 07:32 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