Winforms: Application.Exit vs Enviroment.Exit vs Form.Close
Ниже приведены способы выхода из приложения:
Enviroment.Exit(0)
Application.Exit()
Form.Close()
В чем разница между этими тремя методами и когда использовать их?
Ответ 1
Правильный метод будет Application.Exit(). Согласно Документация, он завершает все петли сообщений и закрывает все окна, тем самым предоставляя вашим формам возможность выполнять их код очистки (в Form.OnClose и т.д.).).
Environment.Exit просто убьет процесс. Если какая-либо форма имеет, например, несохраненные изменения, у него не было бы шансов спросить у пользователя, хочет ли он их сохранить. Кроме того, ресурсы (соединения с базой данных и т.д.) Не могут быть выпущены должным образом, файлы могут не очищаться и т.д.
Form.Close просто делает то, что он говорит: он закрывает форму. Если у вас открыты другие формы (возможно, не сейчас, но в какой-либо будущей версии вашего приложения), приложение не будет завершено.
Имейте в виду, что если вы используете многопоточность, Application.Exit() не завершит ваши потоки (и, следовательно, приложение будет продолжать работать в фоновом режиме, даже если графический интерфейс завершен). Поэтому вы должны принять меры, чтобы убить ваши потоки, либо в основной функции (т.е. Program.Main()), либо в событии OnClose основной формы.
Ответ 2
все в порядке.
но form.Close() не закроет ваше приложение
он закрывает форму и после этого
основной метод возвращает int (exitcode).
если вы хотите, чтобы ваше приложение завершалось с помощью exitcodes, используйте
Environmet.Exit(exitcode) или вернуть код выхода в main-method