Thema: Delphi Thread nicht terminiert?

Einzelnen Beitrag anzeigen

mcinternet

Registriert seit: 22. Apr 2010
Ort: Odenwald
193 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Thread nicht terminiert?

  Alt 1. Feb 2013, 10:37
Mit Option freeonterminate=true
[...]
Wenn ich irgendwann später MThread.terminated abfrage, so ist dieser immer noch aktiv.
[...]
Mache ich allerdings beim FormClose die Zeile: if assigned(MThread) then freeandnil(MThread) rein, knallt es.
FreeOnTerminate bedeutet nicht, dass alle Variablen, die diesen Thread referenzieren, auf nil gesetzt werden.

Somit greift die Abfrage auf MThread.Terminated evtl. auf ein nicht mehr existierendes Objekt zu - Fehler!

Und im FormClose ist MThread auch dann noch Assigned, wenn der Thread selber freigegeben ist, gleiches Problem!

Vllt. solltest Du MThread im OnTerminated auf nil setzen, bzw. das Konzept weiter überdenken.

Die Procedure onterminate wird nur einmal aufgerufen. Das ist nicht das Problem. Möchte nur das der Thread gekillt wird. Wo kann ich das am Besten machen? Und womit? Freeandnil? Oder destroy?

Gruss
Jörg
  Mit Zitat antworten Zitat