AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Ganzes Programm aus Thread heraus beenden
Thema durchsuchen
Ansicht
Themen-Optionen

Ganzes Programm aus Thread heraus beenden

Ein Thema von Tubos · begonnen am 15. Apr 2004 · letzter Beitrag vom 15. Apr 2004
Antwort Antwort
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#1

Ganzes Programm aus Thread heraus beenden

  Alt 15. Apr 2004, 21:39
Hallo!

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

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: Ganzes Programm aus Thread heraus beenden

  Alt 15. Apr 2004, 21:53
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.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#3

Re: Ganzes Programm aus Thread heraus beenden

  Alt 15. Apr 2004, 22:21
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
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#4

Re: Ganzes Programm aus Thread heraus beenden

  Alt 15. Apr 2004, 22:32
och, wieso nicht?

mir schwebt da sowat vor:
Delphi-Quellcode:
oncreate sozusagen
repeat
Application.processmessages;
until beendedich:=true
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#5

Re: Ganzes Programm aus Thread heraus beenden

  Alt 15. Apr 2004, 22:34
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.
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#6

Re: Ganzes Programm aus Thread heraus beenden

  Alt 15. Apr 2004, 22:37
vielleicht onshow?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#7

Re: Ganzes Programm aus Thread heraus beenden

  Alt 15. Apr 2004, 22:39
aber ich will doch nicht die gesamte programmstruktur ändern, nur wegen eines einfach schließ-befehles
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#8

Re: Ganzes Programm aus Thread heraus beenden

  Alt 15. Apr 2004, 22:43
was heisst, die ganze struktur verändern?

du mnusst da eine einzige schleife zutun
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#9

Re: Ganzes Programm aus Thread heraus beenden

  Alt 15. Apr 2004, 22:47
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!
Lukas
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#10

Re: Ganzes Programm aus Thread heraus beenden

  Alt 15. Apr 2004, 22:52
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

PostThreadMessage({id des Hauptthread's}, WM_QUIT, 0, 0);
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  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 19:28 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