我在我的 WPF 应用程序中使用第 3 方 WinForms 登录对话框,出于某种原因,这导致我的 WPF 应用程序在调试时无法正确关闭。
如果我在登录前退出 winforms 登录对话框,应用程序会正确关闭,但是如果我成功登录并启动 WPF 窗口,退出窗口不会关闭应用程序。
我在 App
的 OnExit
方法中放置了一个断点,但它永远不会被调用。我重写了主窗口的 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 中以 Debug模式运行时才会出现此行为。在不调试的情况下运行应用程序会正确关闭应用程序。
谁能指出我正确的方向,说明是什么导致了这种行为?
编辑
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
}
最佳答案
这听起来很愚蠢,但您是否尝试过调用 winformsLoginDialog.Close();在主窗口的 onClosing 方法中?我怀疑 winforms 登录对话框仍在运行线程,和/或表单可能已隐藏而不是关闭。
你可以试试 System.Environment.Exit(0)
关于c# - 为什么我的 WPF 应用程序在显示 WinForms 对话框后不能正常关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7349068/