Закрытие приложений

Какова наилучшая практика при закрытии приложения С#?

Я прочитал, что вы можете использовать:

Environment.Exit(0); or Application.Exit();

Но в чем разница?

Кроме того, что касается среды. Exit (0), я использовал коды выхода до того, как работал с Java, но никогда не понимал их цели. Какую роль они играют при выходе из приложения на С#?

Ответ 1

System.Windows.Forms.Application.Exit() - информирует все рассылки сообщений о том, что они должны завершиться, а затем закрывает все окна приложений после обработки сообщений. Этот метод останавливает все запущенные циклы сообщений во всех потоках и закрывает все окна приложения. Этот метод не заставляет приложение закрываться. Метод Exit() обычно вызывается из цикла сообщений и вынуждает Run() возвращаться. Чтобы выйти из цикла сообщений только для текущего потока, вызовите ExitThread(). Это вызов для использования, если вы используете приложение Windows Forms. Как правило, используйте этот вызов, если вы звонили System.Windows.Forms.Application.Run().

System.Environment.Exit(exitCode) - завершает этот процесс и дает базовой операционной системе указанный код выхода. Этот вызов требует, чтобы у вас были права SecurityPermissionFlag.UnmanagedCode. Если вы этого не сделаете, возникает ошибка SecurityException. Это вызов, который нужно использовать, если вы запускаете консольное приложение.

Я надеюсь, что лучше всего использовать Application.Exit

Смотрите также эти ссылки:

Ответ 2

Application.Exit для приложений Windows Forms - он информирует все насосы сообщений, которые они должны прекратить, ждет их завершения обработки событий, а затем завершает работу приложения. Обратите внимание, что это не обязательно заставляет приложение выйти.

Environment.Exit применим для всех приложений Windows, однако он в основном предназначен для использования в консольных приложениях. Он немедленно завершает процесс с заданным кодом выхода.

В общем случае вы должны использовать Application.Exit в приложениях Windows Forms и Environment.Exit в консольных приложениях (хотя я предпочитаю, чтобы метод/точка ввода Main выполнялся до завершения, а не вызывал Environment.Exit в консольных приложениях).

Подробнее см. документацию MSDN.

Ответ 3

Какую роль они играют при выходе из приложения на С#?

То же, что и в любом другом приложении. В основном они возвращаются вызывающему. Irrelvant, если вы начали двойным щелчком iicon. Релевантным является вызов командного файла, который решает, работает ли приложение в коде возврата. SO, если вы не пишете нужную ему программу, возвращаемый dcode не имеет значения.

Но в чем разница?

Один из среды один из System.Windows.Forms?.Application. Функционально не должно быть большой разницы.

Ответ 4

для меня лучшее утешение это

 Thread.CurrentThread.Abort();

и принудительно закрыть приложение.