![]() |
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? |
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. |
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: |
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 |
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. |
Re: Ganzes Programm aus Thread heraus beenden
vielleicht onshow?
|
Re: Ganzes Programm aus Thread heraus beenden
aber ich will doch nicht die gesamte programmstruktur ändern, nur wegen eines einfach schließ-befehles ;)
|
Re: Ganzes Programm aus Thread heraus beenden
was heisst, die ganze struktur verändern?
du mnusst da eine einzige schleife zutun |
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! |
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