2011-12-09 213 views
1

我想在WPF中实现一个登录窗口。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(); 
    ... 

在登录窗口构造我抛出异常。它从未被抓住。

如果我将Window_Loaded的内容封装在try/catch块中,我可以捕获异常,但是如果从Window_Load()中重新抛出该异常,它将永远不会被捕获。

这对我来说似乎很奇怪。我想我习惯于未捕获的异常会杀死应用程序的环境。在WPF中,我需要做些什么来实现这一点?

回答

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}); 
    }