Лучший способ убить экземпляр приложения - PullRequest
12 голосов
/ 26 октября 2010

Каков наилучший способ убить экземпляр приложения?Мне известны следующие три метода:

Application.Exit ()

Environment.Exit (0)

Process.GetCurrentProcess (). Kill ()

Может кто-нибудь сказать мне, что лучше или при использовании каждого из перечисленного выше будет уместно?

Ответы [ 4 ]

20 голосов
/ 26 октября 2010

рекомендации от c # faq:

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

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

Убивать процесс, вероятно, не рекомендуется.

2 голосов
/ 26 октября 2010

Если это приложение Windows Forms, используйте Application.Exit ().Это хорошо закроет программу.

0 голосов
/ 20 августа 2014
 foreach (Process proc in Process.GetProcessesByName("WindowsFormsApplication1.vshost"))
        {

            proc.Kill();

        }
0 голосов
/ 26 октября 2010

Просто быстрый ответ, я всегда буду использовать опцию «Выход», когда она будет работать. Это гораздо более чистый способ сделать это.

«Убить» процесс означает именно это, и поэтому программе не удается выполнить какую-либо работу по очистке, которую он может захотеть выполнить (например, сохранение конфигурации, сохранение других файлов и т. Д.). Если вы не знаете, что это за процесс и что у него нет «очистки», и даже тогда просто использовать «Выход».

Похоже, что нет никакой разницы между двумя упомянутыми вами опциями «Выход», я бы поспорил, что первый просто неявно пропускает нулевое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...