WPF 对话框无法运行的应用程序未处理异常
Application Unhandled Exception with WPF Dialog Not Functioning
我有一个应用程序,其中有一个未处理异常的处理程序,可以向用户显示一个更好的对话框并允许他们提交失败报告。
我最初有一个 Winforms 对话框,它工作正常。但是我决定将它更新为 WPF 对话框以匹配已升级到 WPF 的应用程序中的所有其他内容,并且它显示出一些奇怪的行为。
我原来有
AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf Boom
并在handler中(msg是一个构造好的字符串消息):
Dim d As New Dlg_Boom(msg)
d.ShowDialog()
Me.Shutdown()
当我切换到 WPF 对话框时,对话框出现,但我立即得到 'Program has stopped working' windows 对话框。
我也尝试过同时使用:
AddHandler Dispatcher.UnhandledException, AddressOf Boom
AddHandler Application.DispatcherUnhandledException, AddressOf Boom
通过这些,我可以选择设置 e.Handled=True。如果我将其设置为 false,我会看到不工作的对话框,如果我将其设置为 true,它会闪烁我的 WPF 对话框并立即将其关闭。
这就像它忽略了它是 ShowDialog() 的事实并将其视为 Show() 而不是等待它 return。奇怪的是,如果我在 ShowDialog() 调用之前放置一个消息框,它会按预期工作并等待它 return.
很纳闷,请问有大神解答吗?
好的,我不确定这是否真的是一个解决方案,所以我没有将其标记为答案,但它似乎只是不喜欢未处理的异常处理程序中的 WPF 对话框。我试着只显示一个空白的 WPF 对话框,以确保它在我的代码中没有什么奇怪的,并且它做了同样的事情。一旦我将 Winforms 对话框放入其中,它就会在 ShowDialog 例程中正确停止并等待它 return。当我用 WPF 调用它时,它显示对话框但继续执行代码(我的下一个命令是关闭的)所以它只是闪烁对话框然后消失。我还尝试在 ShowDialog() 调用后立即放置一个消息框,它会弹出对话框并立即显示消息框。一旦我关闭消息框,它就会关闭应用程序。
无论如何,我最终做的是创建一个只包含一个 ElementHost 对象的 WinForms 对话框,并将我的 WPF 对话框变成一个 WPF UserControl。然后我在 ElementHost 中托管了 WPF 控件。看起来有点倒退和丑陋,但它有效...
如果有人对使用纯 WPF 有更好的建议,我会将其标记为答案。
我有一个应用程序,其中有一个未处理异常的处理程序,可以向用户显示一个更好的对话框并允许他们提交失败报告。
我最初有一个 Winforms 对话框,它工作正常。但是我决定将它更新为 WPF 对话框以匹配已升级到 WPF 的应用程序中的所有其他内容,并且它显示出一些奇怪的行为。
我原来有
AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf Boom
并在handler中(msg是一个构造好的字符串消息):
Dim d As New Dlg_Boom(msg)
d.ShowDialog()
Me.Shutdown()
当我切换到 WPF 对话框时,对话框出现,但我立即得到 'Program has stopped working' windows 对话框。
我也尝试过同时使用:
AddHandler Dispatcher.UnhandledException, AddressOf Boom
AddHandler Application.DispatcherUnhandledException, AddressOf Boom
通过这些,我可以选择设置 e.Handled=True。如果我将其设置为 false,我会看到不工作的对话框,如果我将其设置为 true,它会闪烁我的 WPF 对话框并立即将其关闭。
这就像它忽略了它是 ShowDialog() 的事实并将其视为 Show() 而不是等待它 return。奇怪的是,如果我在 ShowDialog() 调用之前放置一个消息框,它会按预期工作并等待它 return.
很纳闷,请问有大神解答吗?
好的,我不确定这是否真的是一个解决方案,所以我没有将其标记为答案,但它似乎只是不喜欢未处理的异常处理程序中的 WPF 对话框。我试着只显示一个空白的 WPF 对话框,以确保它在我的代码中没有什么奇怪的,并且它做了同样的事情。一旦我将 Winforms 对话框放入其中,它就会在 ShowDialog 例程中正确停止并等待它 return。当我用 WPF 调用它时,它显示对话框但继续执行代码(我的下一个命令是关闭的)所以它只是闪烁对话框然后消失。我还尝试在 ShowDialog() 调用后立即放置一个消息框,它会弹出对话框并立即显示消息框。一旦我关闭消息框,它就会关闭应用程序。
无论如何,我最终做的是创建一个只包含一个 ElementHost 对象的 WinForms 对话框,并将我的 WPF 对话框变成一个 WPF UserControl。然后我在 ElementHost 中托管了 WPF 控件。看起来有点倒退和丑陋,但它有效...
如果有人对使用纯 WPF 有更好的建议,我会将其标记为答案。