![]() |
Application.Terminate in Vista
Hallo, wenn ich in Vista Application.Terminate; ausführe, ist der Prozess nach dem Beenden des Programms immer noch im Task-Manager zu sehen, läuft also noch. Kann das jemand reproduzieren?
|
Re: Application.Terminate in Vista
Man könnte das schon mal testen. Aber das Application - Object zu benutzen und das unter Vista ? Macht das Sinn ? :P
|
Re: Application.Terminate in Vista
Zitat:
|
Re: Application.Terminate in Vista
Zitat:
|
Re: Application.Terminate in Vista
Weil jede VCL Anwendung das "Application Objekt" benutzt:
Delphi-Quellcode:
Und warum sollte man unter Vista keine Methoden dieses Objektes aufrufen?
program Project1;
uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Zu deinem Problem: Laufen eventuell noch irgendwelche nicht beendeten Threads? |
Re: Application.Terminate in Vista
Zitat:
|
Re: Application.Terminate in Vista
Auch das ist Blödsinn. TApplication.Terminate tut nichts anders als
![]() Zitat:
|
Re: Application.Terminate in Vista
Zitat:
|
Re: Application.Terminate in Vista
Also mit Halt fährst du dein Programm nun wirklich gegen die Wand. Du solltest mal überlegen, ob es Sinn ergibt, was du da machst. Du steigst in das Auto ein und willst gleichzeitig wieder aussteigen. Das kann irgendwie nicht gehen. Also entweder steigst du erst gar nicht ein oder du steigst erst richtig ein und steigst dann wieder aus.
|
Re: Application.Terminate in Vista
Naja, mit Halt fährt man nicht wirklich gegen die Wand. Es ist auch eine "normale" Variante sein Programm zu beenden mit dem Vorteil einen Rückgabewert setzen zu können.
|
Re: Application.Terminate in Vista
Aber so viel ich weiß, werden dann keine DLLs mehr entladen. Allerdings bin ich mir da nicht ganz sicher.
|
Re: Application.Terminate in Vista
Ich kenne das unter Vista hauptsächlich mit Indy 9: Indy 9 ist da ganz gemein und gibt eine critical section nicht frei (selbst wenn man die Units nur einbindet, aber nicht benutzt - muß wohl am initialization-Teil einer der Units liegen), hab deswegen alle Programme, die ich aus rausgebe, auf Synapse umgestellt. Eigene ähnliche Fehler sind natürlich genauso kritisch, daher ganz allgemein: FastMM4 benutzen und alle Memory Leaks beheben, wenn das Programm dann mal ohne Leaks beendet, dann klappts auch mit Vista ;)
|
Re: Application.Terminate in Vista
Moin Peter,
Zitat:
Wenn irgendeine Prüfung an der genannten Stelle dazu führt, dass das Programm nicht weiterlaufen soll, solltest Du die Prüfung lieber in der Projektdatei vornehmen. BTW: Application.Terminate verwende ich auch ungern, da hier, u.A., OnCloseQuery/OnClose nicht aufgerufen werden. |
Re: Application.Terminate in Vista
Zitat:
An diesen Punkt (Meldungsschleife) kommt die Anwendung aber normalerweise erst in Application.Run. Also werden alle automatisch erzeugten Formulare, Berichte und Datenmodule (alles was in der DPR-Datei vor dem Application.Run steht) zunächst noch erzeugt (laufen also durch das OnCreate), bevor dein Application.Terminate Wirkung zeigt. |
Re: Application.Terminate in Vista
Zitat:
|
Re: Application.Terminate in Vista
Zitat:
|
Re: Application.Terminate in Vista
Moin Peter,
Zitat:
Delphi-Quellcode:
begin
// Prüfung der Programmvoraussetzungen if Fehler then begin // Sprechende Meldung(en) ausgeben end else begin Application.Initialize; Application.CreateForm(....); Application.Run; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 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