Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi unterschiede beim Schliessen des Progi (https://www.delphipraxis.net/70352-unterschiede-beim-schliessen-des-progi.html)

tom_po 29. Mai 2006 09:41


unterschiede beim Schliessen des Progi
 
Wenn ich normalerweise mein Programm schliesse (mit x rechts oben), geschieht dies mit

Delphi-Quellcode:
mainform.Close;
Ich kann ja im Menu auch einbauen:

Delphi-Quellcode:
Application.Terminate;
Welches ist die "bessere" Lösung, das Progi zu schliessen, bzw. was geschieht genau bei der einen und was bei der anderen Lösung?

RavenIV 29. Mai 2006 10:00

Re: unterschiede beim Schliessen des Progi
 
Du solltest das Mainform.Close vorziehen.
Denn nur dann werden verschiedene Abläufe durchlaufen.
Es wird das Mainform gelöscht und Speicher freigegeben, alle nicht mehr benötigten Komponenten werden gelöscht und deren Speicher freigegeben und vor allem wird das Form.Close und Form.Destroy durchlaufen.

Bei Application.Terminate wird die Anwendung abgebrochen und nichts freigegeben. Es passiert das gleiche, wie wenn du die Anwendung im Taskmanager abschiesst.

tom_po 29. Mai 2006 10:14

Re: unterschiede beim Schliessen des Progi
 
Danke für deine wertvollen Infos...

Luckie 29. Mai 2006 10:19

Re: unterschiede beim Schliessen des Progi
 
Nicht ganz. Mit Application.Terminate wird der Prozess beendet und Windows räumt den Speicher auf. Aber es wird kein OnClose, OnCloseQuery und kein OnDestroy mehr ausgeführt.

RavenIV 29. Mai 2006 10:22

Re: unterschiede beim Schliessen des Progi
 
Zitat:

Zitat von Luckie
Nicht ganz. Mit Application.Terminate wird der Prozess beendet und Windows räumt den Speicher auf. Aber es wird kein OnClose, OnCloseQuery und kein OnDestroy mehr ausgeführt.

ich hab das schon länger mal getestet.
bei Application.Terminate wird nicht aller Speicher wieder freigegeben.
Bzw. bei Form.Close wird mehr Speicher freigegeben.

Luckie 29. Mai 2006 10:44

Re: unterschiede beim Schliessen des Progi
 
Wo hast du es getestet? So bald ein Prozess beendet wird, gibt auch Windows den Speicher dieses Prozess automatisch wieder frei.

RavenIV 29. Mai 2006 10:53

Re: unterschiede beim Schliessen des Progi
 
Zitat:

Zitat von Luckie
Wo hast du es getestet? So bald ein Prozess beendet wird, gibt auch Windows den Speicher dieses Prozess automatisch wieder frei.

hab es auf meinem PC getestet. :wink:

ernsthaft:
eine grössere Applikation mit mehreren Festern. Ein Fenster aufgemacht, Eingaben getätigt, Fenster wieder geschlossen, anderes Fenster geöffnet, Änderungen, Fenster geschlossen, usw., dann Anwendung geschlossen.
Dabei den Speicherplatz im Taskmanager->Systemleistung angeschaut.

Beim Mainform.Close (Kreuz oben rechts) wurde aller Speciher wieder freigegeben.
Bei Applikation.Terminate (in Datei->Schliessen eingebaut) wurde eben nicht aller Speicher freigegeben. Wieviel belegt geblieben ist, weiss ich nicht mehr genau.


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