只是有一個有趣的問題,由以下的事件序列中的WPF問題後恢復:從WPF的OnRender覆蓋叫怎樣的OnRender
代碼拋出異常(有沒有什麼神祕之本 - 這是在一些視圖模型代碼中的一個微不足道的錯誤)
異常是未處理的,所以被我們的DispatcherUnhandledException處理程序拾取。
DispatchedUnhandledException處理程序試圖打開一個WPF窗口來顯示異常,允許報告等等。窗口打開失敗,拋出另一個異常(來自我們的全局異常處理程序),終止應用程序。
看來WPF採取暴力異常(!),以嘗試的的OnRender執行過程中打開一個新的窗口,以及各種不好的事情發生,從第二Win32Exception由內WPF深一CreateWindowEx被拋出,以如果我們嘗試並在我們的異常處理程序中執行類似MessageBox.Show的操作時,應用程序立即終止,當我們檢測到雙重異常時。
我沒有今天這種情況處理的特殊問題,但有一個普遍的問題:
有沒有辦法在一個OnRender將處理程序中恢復狀態,WPF,讓普通WPF活動可以繼續嗎?我試圖在重新拋出它之前捕捉OnRender中的異常並調用dc.Close(),但這似乎沒有任何區別。我想我應該找一個'WpfState.Reset()'調用或類似的東西。
嗯。我會看看,但我不認爲OnRender是通過與主U/I不同的線程調用的。我認爲這個帖子可能更接近標準,但除了'不這樣做'之外,它不提供任何建議:http://blogs.msdn.com/b/nickkramer/archive/2006/05/06/ 591252.aspx – 2010-07-16 21:44:22