2011-12-09 70 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}); 
    }