Вот фрагмент кода, где я вывожу простой диалог («chooser»). В зависимости от ввода пользователя приложение может завершиться.Почему моя программа C# WPF продолжает выполнять строки после Application.Shutdown()?
DPChooser chooser = new DPChooser(dataProvider);
if (chooser.ShowDialog() == false)
Application.Current.Shutdown(0);
else
ApplicationContext.Current.InitializeDataProviderAPI(chooser.DataProvider);
}
// more code continues here
// THE PROBLEM:
// Even when Shutdown() above is called,
// the execution continues proceeding past here!
Я запустить его в отладчике, так что я знаю что если оценивает ложь, и я знаю что Shutdown() вызывается.
Так почему же он не закрыт?
Примечание: это не резьбонарез, я думаю. Я еще ничего не начинаю на других потоках. Даже если речь шла о потоке, я все равно не ожидал, что код в этом потоке продолжит работу над Shutdown().
Хех, это не так интуитивно. Я должен был подумать, что просто вернусь туда, хотя, на меня. Благодарю. –
Подождите, документы для Shutdown (int exitCode) говорят, что exitCode возвращается в операционную систему. Если этот метод фактически не убивает приложение, как приложение может использовать его для возврата этого кода exitCode? –
@GrantB Это контролируемое выключение, которое не останавливает исполняемый поток. Если вы используете стандартную WPF-сантехнику, то этот код выхода - это то, что возвращается из точки входа, но это происходит после того, как все остальное выполняется (как вы обнаружили здесь). –