![]() |
Prozess bei laufenden Thread beenden
Hallo,
ich habe hier einen Thread, der wartet nicht auf ein Windows-Kernel-Object, sondern läuft einfach über das übliche in TMyThread.Execute while not Terminated do ... Ich hatte mal gelesen, dass der eigentliche Prozess nicht beendet wird, wenn noch ein Thread läuft. Das ist scheinbar nicht so, sagt auch die WinAPI von MS (siehe oben). Kann ich also davon ausgehen, dass mein laufender Thread beim Programmende nicht das Programm blockiert? |
AW: Prozess bei laufenden Thread beenden
Ja, ein Prozess wird beendet, wenn irgendein Thread mit einer Exception bis zum Windows durch rauscht.
Darum hat TThread auch intern ein Try-Except um das Execute, siehe ThreadProc in System.Classes. Über Thread.FatalException kommt man im OnTerminate, DoTerminate oder im Destroy (vor Inherited) da dran. Ebenso hat die VCL deswegen um die meisten Events/Ereignisse ein Try-Except drumrum. (nur bei Konsolenanwendungen, muß man es selber machen, aber darum enthält deren Codevorlage auch ein Try-Except) Davon ausgehen: Nein, ähhh ja :lol: Der Prozess wird geschlossen, wenn alle Threads beendet sind, aber der Delphi-Hauptthread ruft am Ende ein ![]() ![]() |
AW: Prozess bei laufenden Thread beenden
Hallo,
schießt ALLES brutal ab OK, das ist ja gemein ;) |
AW: Prozess bei laufenden Thread beenden
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz