Подтвердить что ты не робот

Winforms: Application.Exit vs Enviroment.Exit vs Form.Close

Ниже приведены способы выхода из приложения:

  • Enviroment.Exit(0)
  • Application.Exit()
  • Form.Close()

В чем разница между этими тремя методами и когда использовать их?

4b9b3361

Ответ 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