Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm beenden Task im Task Manager weiter vorhanden??? (https://www.delphipraxis.net/115008-programm-beenden-task-im-task-manager-weiter-vorhanden.html)

Luckie 4. Jun 2008 21:38

Re: Programm beenden Task im Task Manager weiter vorhanden??
 
Du hast angezweifelt, dass ein Programm nicht eendet wird, wenn noch ein Thread läuft und hast das mit den Funktionsaufrufen bei einem Delphi Programm belegt. Ich habe aber bei Jeffrey Richter "Windows Programmierung für Experten" gelsen gehabt, dass ´wenn noch ein Thread läuft der Prozess nicht beendet wird. Und habe vermutet, dass der Programme, die In C gewschrieben sind, sich da anders verhalten.

Christian Seehase 4. Jun 2008 21:40

Re: Programm beenden Task im Task Manager weiter vorhanden??
 
Moin Stefan,

also ich habe diesen Effekt schon gehabt, wenn ein Programm noch viel aufzuräumen hatte, bevor es sich endgültig beendet hat.

sx2008 5. Jun 2008 06:00

Re: Programm beenden Task im Task Manager weiter vorhanden??
 
Deine selbsterstellten Threads sollten regelmässig überprüfen, ob die Hauptanwendung schon beendet werden soll:
Delphi-Quellcode:
procedure TMyThread.Execute;
begin
   // irgend eine Berechnung / Aufgabe, die der Thread in einer Schleife ausführt
   for i := ...... do
   begin
     .....
     if Application.Terminated then
     begin
       // hier evtl. noch Aufräumarbeiten für den Thread
       ...
       Exit; // und dann so schnell wie möglich raus
     end;
   end;
end;
Das Beenden einer Anwendung wird mit Application.Terminate eingeleitet. (Auch das Schliesen des Hauptform führt intern zum Aufruf von Application.Terminate)
Dies bewirkt, dass das Flag Application.Terminated auf True gesetzt wird.
Und genau dieses Flag müssen die Threads immer mal wieder überprüfen.

Apollonius 5. Jun 2008 15:21

Re: Programm beenden Task im Task Manager weiter vorhanden??
 
@Luckie: Meines Wissens beendet Windows Anwendungen automatisch erst dann, wenn alle Threads beendet sind. Sowohl Delphi- als auch C-RTL rufen aber, nachdem der Haupt-Programmblock (begin-end. bzw. Main) beendet ist, ExitProcess auf.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:01 Uhr.
Seite 2 von 2     12   

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