2012-09-10 53 views
3

簡單的WPF應用程序有平原,空Window我在其中掛鉤的事件處理程序窗口的Activated事件:爲什麼WPF吞下Window.Activated事件處理程序中引發的異常?

public partial class MainWindow 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     Activated += OnWindowActivated; 
    } 

    private void OnWindowActivated(object sender, EventArgs e) 
    { 
     throw new NotImplementedException(); 
    } 
} 

當一個例外是在處理程序拋出未處理的其他地方,我期待的應用死了,但沒有。 WPF似乎在吞噬異常的某個地方,窗口彈出並保持運行良好。

爲什麼?

+0

我注意到這發生在我身上,我不確定原因。 –

回答

2

這可能是與在64位操作系統上運行32位應用程序相關的問題。如果是這種情況,那麼Paul Betts的博客文章應該給你一個好主意。

簡而言之,它看起來像是32位進程,由於跨用戶模式/內核模式邊界的異常傳播問題,.NET框架可以消除您的異常。對於64位進程,這不會發生,所以測試這是否確實是您的問題的最簡單方法是重新構建「任何CPU」平臺的測試應用程序並再次運行它。當我這樣做時,它會像人們預期的那樣墜毀。

相關問題