Ответ 1
Правильный метод будет Application.Exit()
. Согласно Документация, он завершает все петли сообщений и закрывает все окна, тем самым предоставляя вашим формам возможность выполнять их код очистки (в Form.OnClose и т.д.).).
Environment.Exit
просто убьет процесс. Если какая-либо форма имеет, например, несохраненные изменения, у него не было бы шансов спросить у пользователя, хочет ли он их сохранить. Кроме того, ресурсы (соединения с базой данных и т.д.) Не могут быть выпущены должным образом, файлы могут не очищаться и т.д.
Form.Close
просто делает то, что он говорит: он закрывает форму. Если у вас открыты другие формы (возможно, не сейчас, но в какой-либо будущей версии вашего приложения), приложение не будет завершено.
Имейте в виду, что если вы используете многопоточность, Application.Exit()
не завершит ваши потоки (и, следовательно, приложение будет продолжать работать в фоновом режиме, даже если графический интерфейс завершен). Поэтому вы должны принять меры, чтобы убить ваши потоки, либо в основной функции (т.е. Program.Main()
), либо в событии OnClose
основной формы.