Я использую сторонний диалог входа в WinForms в моем приложении WPF, и по какой-то причине это делает мое приложение WPF некорректно закрывающимся при отладке.
Если я выйду из диалогового окна входа в winforms перед входом в систему, приложение закроется правильно, однако, если я успешно войду в систему и открою окно WPF, выход из окна не завершит работу приложения.
Я поставил точку останова в OnExit
методе App
, и он никогда не вызывается. Я переписал метод OnClosing
моего главного окна, и он вызывается, но даже вызов Application.Current.ShutDown()
не завершает работу приложения правильно. Я также попытался установить для ShutdownMode
моего приложения значение OnExplicitShutdown
и OnMainWindowClose
, и ни один из них не выключил его.
Единственный совет, который у меня есть, заключается в следующем: в окне отладки появляется следующее, но я понятия не имею, что он пытается мне сказать.
The thread 'vshost.RunParkingWindow' (0xf74) has exited with code 0 (0x0).
The thread <No Name> (0x1b58) has exited with code 0 (0x0).
Это происходит только при запуске в режиме отладки в Visual Studio. Запуск приложения без отладки корректно закрывает приложение.
Может ли кто-нибудь указать мне правильное направление относительно того, что может быть причиной такого поведения?
Редактировать
Диалог входа в WinForms - это не традиционный диалог входа в систему с методом Show()
или Close()
, это статический класс, который имеет только методы Login()
и Logout()
.
Он используется примерно так:
if (CompanyNamespace.ApplicationName.Login())
{
var shell = new ShellView();
var context = new ShellViewModel();
shell.DataContext = context;
shell.Show();
// When the Shell Window gets closed, the debugger doesn't stop
}
else
{
Application.Current.Shutdown(); // Works fine
}