只是有一个有趣的问题,由以下的事件序列中的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