Выход из приложения winforms С#

У меня есть приложение, которое импортирует данные из Excel. Однако, когда я запускаю приложение winforms, и я запускаю приложение, используя System.Windows.Forms.Application.Exit();, я все еще вижу "MyAppName".vshost32.exe, запущенный в диспетчере задач.

Когда я выхожу из приложения в режиме отладки, форма закрывается, но VS IDE не останавливается.

Как обеспечить правильное завершение работы приложения.

Ответы

Ответ 2

Ваш вызов Application.Exit() работает нормально. Исполняемый файл MyAppName.vshost32.exe является хостом для целей отладки. Он запускается, пока у вас есть проект, открытый в Visual Studio, независимо от того, есть ли активный сеанс отладки.

Обновление: Хорошо, я неправильно понял. Вышеизложенное верно, но у вас, вероятно, проблемы с зависавшими потоками в фоновом режиме. Вам нужно закрыть свои потоки, чтобы закрыть его. Ашер отвечает на это. Если вы просто пытаетесь сделать супер-взломанное быстрое и грязное убийство, вы можете использовать следующее (хотя я не беру на себя ответственность за побочные эффекты, так как это очень хаки):

System.Diagnostics.Process.GetCurrentProcess().Kill();

Ответ 3

Вы пробовали более жестокую функцию Environment.Exit()?

Application.Exit() просто отправляет сообщение о завершении; если сообщение никогда не обрабатывается (по какой-либо причине), приложение будет работать неопределенно долго.

Из документации MSDN Application.Exit():

Метод Exit останавливает все запущенные петли сообщений во всех потоках и закрывает все окна приложения. Этот метод не обязательно заставляет приложение выйти. Метод Exit обычно вызывается из цикла сообщений и принудительно возвращает Run.

Ответ 4

У меня была аналогичная проблема, вызванная сторонним инструментом, который не позволял мне устанавливать потоки в качестве фона. Полином имел правильную идею, но тогда синтаксис выглядит так:

System.Diagnostics.Process.GetCurrentProcess().Kill();