Dann mach es ohne
VCL. Registrier eine Fensterklasse. Erzeuge ein unsichtbares Fenster, dann hast du eine Messageloop in der du WM_QUERYENDSESSION abfagen kannst und deine Thread beenden kannst.
Und wenn du dann noch was drauf hast, nimmst du auch nicht die Threadklasse von der
VCL, sondern machst es zu Fuß mit der
WinAPI.
Beispielcode zu Threads: SortIt auf meiner Seite.
Und dass dein Programm nicht beendet wird, ist auch klar. Es hat ja keine Messageloop an die Windows ein WM_QUIT beim Runterfahren senden könnte. Ergo läuft es und läuft und läuft und Windows fährt nicht runter, weil noch ein Prozess (Programm will ich es mal nicht nennen
) aktiv ist, der sich nicht beenden läßt.