Die richtige Methode wäre Application.Exit()
. Gemäß der Documentation beendet es alle Nachrichtenschleifen und schließt alle Fenster, so dass Ihre Formulare die Möglichkeit haben, ihren Bereinigungscode (in Form.OnClose usw.) auszuführen.
Environment.Exit
würde nur den Prozess beenden. Wenn eine Form z.B. ungesicherte Änderungen hat es keine Chance den Benutzer zu fragen, ob er sie speichern möchte. Auch Ressourcen (Datenbankverbindungen usw.) konnten nicht richtig freigegeben werden, Dateien werden möglicherweise nicht gelöscht usw.
Form.Close
tut gerade, was es sagt: es schließt ein Formular. Wenn Sie andere Formulare geöffnet haben (möglicherweise nicht jetzt, aber in einer zukünftigen Version Ihrer Anwendung), wird die Anwendung nicht beendet.
Denken Sie daran, dass Application.Exit()
Ihre Threads nicht beendet, wenn Sie Multithreading verwenden (und damit die Anwendung im Hintergrund weiterarbeitet, selbst wenn die GUI beendet wird). Daher müssen Sie Maßnahmen ergreifen, um Ihre Threads entweder in der Hauptfunktion (d. H. Program.Main()
) oder im Ereignis OnClose
Ihres Hauptformulars zu beenden.
Dies ist kein Duplikat Frage. Ich frage nicht, welchen ich verwenden soll, um die Anwendung zu beenden. Ich frage nur nach dem Unterschied zwischen diesen Methoden, da sie ähnliche Operationen durchführt. –