У меня есть приложение, которое получает странные ошибки при отмене из диалогового окна. Приложение не может продолжаться, если поле отменено, поэтому оно выходит, но по какой-то причине оно не работает, и поэтому оно продолжает работать и сработает.
Я отладил эту проблему, и как-то приложение запускается прямо после вызова Application.Exit. Я работаю в режиме отладки, и это актуально из-за небольшого количества кода, который зависит от определяемой переменной RELEASE. Вот мой код выхода из приложения. Я проследил код, и он ввел метод ExitApp и продолжает двигаться, возвращая управление вызывающему и в конечном итоге сбой.
Это приложение, которое предоставляет отчеты по удаленному подключению к рабочему столу, поэтому код выхода немного странный. Он пытается завершить удаленный сеанс, но только при запуске в рамках выпуска, потому что я не хочу закрывать свою машину dev для каждого тестового прогона.
private void ExitApp()
{
HardTerminalExit();
Application.Exit();
}
// When in Debug mode running on a development computer, this will not run to avoid shutting down the dev computer
// When in release mode the Remote Connection or other computer this is run on will be shut down.
[Conditional("RELEASE")]
private void HardTerminalExit()
{
WTSLogoffSession(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, false);
}
Я запустил отладчик прямо из строки Application.Exit, и ничего не происходит, затем управление возвращается к вызывающей стороне после того, как я пройду мимо этой строки.
Что происходит? Это приложение Windows Forms.