Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.111 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Nicht gestarteter TThread wird nicht beendet - Verständnisproblem: Thread und Ev

  Alt 5. Mär 2015, 10:29
Ich habe einmal folgendes getan:
  1. Dem IDataManager einmal eine Methode Dispose() hinzugefügt
  2. Sie in TDataManager mit FreeAndNil(FMyThread) gefüllt
  3. Im Destruktor der MainForm einmal FDataManager.Dispose() gesagt.

Dann bekommt er es hin, den schlafenden Thread zu resumen damit dieser sich dann beenden kann. Warum das so ist habe ich allerdings auch noch nicht verstanden.

Ich sehe nur, dass TThread.Resume ResumeThread aus der WinApi aufruft und eben dieser Aufruf in "deinem" Fall 0 und in "meinem" 1 zurückgibt. Komisch.

Edit:
Ich sehe auch grade, der Aufrufstack der Dispose-Methode und des Destruktors deines TDataManager ist ein völlig anderer. Wahrscheinlich liegt das an der globalen Variable dass deren RefCount erst ziemlich spät auf Null fällt und zu dem Zeitpunkt hat die Host-Anwendung in ihrem Shutdown wahrscheinlich schon so komische Dinge gedreht dass man keine Threads mehr fortsetzen kann.

PPS: Ja, das scheint es zu sein.

Geändert von Der schöne Günther ( 5. Mär 2015 um 10:37 Uhr)
  Mit Zitat antworten Zitat