c# - 为什么我的 WPF 应用程序在显示 WinForms 对话框后不能正常关闭?

标签 c# wpf winforms visual-studio-2010 dialog

我在我的 WPF 应用程序中使用第 3 方 WinForms 登录对话框,出于某种原因,这导致我的 WPF 应用程序在调试时无法正确关闭。

如果我在登录前退出 winforms 登录对话框,应用程序会正确关闭,但是如果我成功登录并启动 WPF 窗口,退出窗口不会关闭应用程序。

我在 AppOnExit 方法中放置了一个断点,但它永远不会被调用。我重写了主窗口的 OnClosing 方法,它确实被调用了,但即使调用 Application.Current.ShutDown() 也无法正确退出应用程序。我还尝试将我的应用程序的 ShutdownMode 设置为 OnExplicitShutdownOnMainWindowClose 并且它们都没有将其关闭。

我得到的唯一提示是调试窗口中出现以下内容,但我不知道它想告诉我什么。

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/

相关文章:

C# 按长度更改 txtBox BackColor

c# - WPF 中的富 HTML 编辑器

c# - 创建动态匿名类型变量

c# - 查找 RoutedEvent 的目的地

c# - XamlObjectWriterException : Cannot create unknown type '{http://schemas.microsoft.com/winfx/2006/xaml/presentation}Ribbon'

.net - 添加节点后自动对TreeView进行排序

c# - 在控制台中打印特殊字符 (C++/C#/SWIG)

c# - ASP.NET - 如何检查一个或多个字段值是否已更改

c# - 使用 C#/WPF(不是 WinForms!)时如何让显示器进入休眠状态

c# - 如何在 WinForms C# 中使用线程?