Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ganzes Programm aus Thread heraus beenden (https://www.delphipraxis.net/20303-ganzes-programm-aus-thread-heraus-beenden.html)

Tubos 15. Apr 2004 21:39


Ganzes Programm aus Thread heraus beenden
 
Hallo!

Mein Programm erzeugt einen unsynchronisierten Thread mit einem API-Aufruf.
Wenn ich in diesem Thread jedoch application.terminate aufrufe, geschieht nichts.
Wieso?

neolithos 15. Apr 2004 21:53

Re: Ganzes Programm aus Thread heraus beenden
 
Das liegt daran das Terminate nur eine Nachricht an den CurrentThread schickt, er möge sich mal beenden.

Application.Terminate muss also immer im Hauptthread gerufen werden.

Tubos 15. Apr 2004 22:21

Re: Ganzes Programm aus Thread heraus beenden
 
Danke!
Wie kann ich das jetzt realisieren?
Eine globale Variable ändern, und die vom Hauptprogramm aus mittels eines Timers jede Sekunde zu überprüfen ist glaub ich nicht so ganz das wahre :mrgreen:

glkgereon 15. Apr 2004 22:32

Re: Ganzes Programm aus Thread heraus beenden
 
och, wieso nicht?

mir schwebt da sowat vor:
Delphi-Quellcode:
oncreate sozusagen
repeat
Application.processmessages;
until beendedich:=true

Tubos 15. Apr 2004 22:34

Re: Ganzes Programm aus Thread heraus beenden
 
Vom Ansatz her super!
OnCreate wird aber aufgerufen, BEVOR die Hauptform angezeigt wird.
In VCL-Projekten gibts da also Probleme bzw. es wird nichts angezeigt.

glkgereon 15. Apr 2004 22:37

Re: Ganzes Programm aus Thread heraus beenden
 
vielleicht onshow?

Tubos 15. Apr 2004 22:39

Re: Ganzes Programm aus Thread heraus beenden
 
aber ich will doch nicht die gesamte programmstruktur ändern, nur wegen eines einfach schließ-befehles ;)

glkgereon 15. Apr 2004 22:43

Re: Ganzes Programm aus Thread heraus beenden
 
was heisst, die ganze struktur verändern?

du mnusst da eine einzige schleife zutun

Tubos 15. Apr 2004 22:47

Re: Ganzes Programm aus Thread heraus beenden
 
ok...
danke für den code, mit onshow funktioniert es!
Ich versuche es aber trotzdem nochmal über die API und schicke einfach WM_Quit an das Hauptprogramm.

edit: Ja, so funktioniert es. Thx!

neolithos 15. Apr 2004 22:52

Re: Ganzes Programm aus Thread heraus beenden
 
Ich würde eine Procedure im Thread schreiben die Application.Terminate aufruft.

Und jene mittels Syncronize aufrufen. Dadurch wird Applicaiton.Terminate im Hauptthread ausgeführt.
Mann könnte natürlich auch einfache mit

Delphi-Quellcode:
PostThreadMessage({id des Hauptthread's}, WM_QUIT, 0, 0);


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 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