我正在尝试在WPF中实现登录窗口。
我有一个MainWindow.xaml:
<Window ...
Closing="Window_Closing">
...
然后在MainWindow.xaml.cs:
private void Window_Loaded(object sender, RoutedEventArgs e) {
LoginWindow loginWindow = new LoginWindow();
loginWindow.Owner = this;
loginWindow.ShowDialog();
...
在LoginWindow构造函数中,我抛出一个异常。它永远不会被抓住。
如果我在一个try / catch块中包装Window_Loaded的内容,我可以捕获异常,但是如果我从Window_Load()中重新抛出它,它就永远不会被捕获。
这对我来说似乎很奇怪。我想我已经习惯了未被捕获的异常会杀死应用程序的环境。在WPF中,我需要做些什么才能启用它?
答案 0 :(得分:1)
使用此构造将恢复可见性的异常,并允许您在x86构建的CurrentDomain_UnhandledException方法中捕获它...
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Loaded -= MainWindow_Loaded;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Dispatcher.BeginInvoke(DispatcherPriority.Loaded, (SendOrPostCallback) delegate
{
Login l = new Login {Owner = this};
l.ShowDialog();
}, new object[] {null});
}