AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Prozess bei laufenden Thread beenden
Thema durchsuchen
Ansicht
Themen-Optionen

Prozess bei laufenden Thread beenden

Ein Thema von hoika · begonnen am 22. Aug 2023 · letzter Beitrag vom 23. Aug 2023
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#1

Prozess bei laufenden Thread beenden

  Alt 22. Aug 2023, 20:09
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?
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Prozess bei laufenden Thread beenden

  Alt 22. Aug 2023, 20:24
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

Der Prozess wird geschlossen, wenn alle Threads beendet sind,
aber der Delphi-Hauptthread ruft am Ende ein Delphi-Referenz durchsuchenHalt aka MSDN-Library durchsuchenTerminateProcess auf und schießt ALLES brutal ab.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (22. Aug 2023 um 20:30 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Prozess bei laufenden Thread beenden

  Alt 22. Aug 2023, 21:35
Hallo,
schießt ALLES brutal ab

OK, das ist ja gemein
Heiko
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Prozess bei laufenden Thread beenden

  Alt 23. Aug 2023, 09:26
Zitat:
When you exit a VCL application, the background threads are just killed off. The application does not wait for them, it just ends. If you want to wait for them, you will have to write the code yourself.

A VCL application, however, will wait (for all eternity, if necessary) for all the tasks that were put in the default thread pool (System.Threading.TThreadPool.Default).
Quelle: https://stackoverflow.com/a/51384481
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz