Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Konsolenanwendung Programmende abfragen

  Alt 20. Dez 2023, 14:36
Nja, normal hat man bei Konsolen ja alles hintereinander.

Also einfach den Code für's Ende ans Ende der DPR.
Normal hat die Konsolen-Vorlage ein Try-Except, welches Exceptions nicht neu auslöst, also einfach nach dessen END diesen Code,
oder nochmal ein Try-Finally drumrum.

* So, das war jetzt für das normale Programmende oder wenn eine Exception in deinem Programmcode auftritt.

* Dann gibt es noch den Fall von Strg+C oder Strg+Untbr, sollte das eine Exception auslösen und abbrechen.
* Was das Schließen des Konsolenfensters macht, weiß ich grade nicht. (sowas wie SIGKILL, SIGTERM, SIGINT oder SIGQUIT verhält sich ja unterschiedlich)

* Einen "richtigen" Abschuss des Programms (Terminate) bekommst'e natürlich garnicht mit, weil dein Programm hart abgeschossen wird und nichts mehr ausführt


Geht es wirklich um Threads, dann mußt du das selbst regeln.
* im Hauptthread den Threads Bescheid geben
* und womöglich auf das Ende der Threads warten
* wartest du nicht, dann werden deine Threads hart abgeschossen ... vor allen, weil Delphi beim ProgrammEnde (des Hauptthreads) ein MSDN-Library durchsuchenTerminateProcess auslöst (egal ob Konsole, VCL, FMX usw.)

* Grundsächlich schißet "normal" Windows immer den kompletten Prozess ab (Terminate), wenn eine Exception in irgendeinem Thread (auch dem Hauptthread) bis zum Windows durchrauscht, drum fängt TThrad Exceptions still und heimlich ab (wenn man es im OnTerminate nicht prüft)
$2B or not $2B

Geändert von himitsu (20. Dez 2023 um 14:52 Uhr)
  Mit Zitat antworten Zitat