WPF OnRender出现问题后如何恢复
刚刚发生了一个有趣的问题,由以下一系列事件引起: 从WPF OnRender覆盖调用的代码引发了一个异常——这并没有什么神秘之处——在某些viewmodel代码中这只是一个小错误 异常未处理,因此由DispatcherUnhandledException处理程序拾取 DispatchedUnhandledException处理程序尝试打开WPF窗口以显示异常、允许报告等。窗口打开失败,从全局异常处理程序引发另一个异常,从而终止应用程序 看来WPF是个例外!在OnRender执行期间尝试打开一个新窗口,会发生各种不好的事情,从WPF中的CreateWindowEx引发的第二个Win32Exception,到如果我们尝试执行MessageBox之类的操作,应用程序会立即终止。当我们检测到双重异常时,在异常处理程序中显示 我今天在处理这种情况方面没有什么特别的问题,但有一个普遍的问题:WPF OnRender出现问题后如何恢复,wpf,exception,Wpf,Exception,刚刚发生了一个有趣的问题,由以下一系列事件引起: 从WPF OnRender覆盖调用的代码引发了一个异常——这并没有什么神秘之处——在某些viewmodel代码中这只是一个小错误 异常未处理,因此由DispatcherUnhandledException处理程序拾取 DispatchedUnhandledException处理程序尝试打开WPF窗口以显示异常、允许报告等。窗口打开失败,从全局异常处理程序引发另一个异常,从而终止应用程序 看来WPF是个例外!在OnRender执行期间尝试打开一个新
有没有办法从OnRender处理程序中恢复WPF状态,以便普通WPF活动可以继续?我尝试在OnRender中捕获异常并在重新刷新之前调用dc.Close,但这似乎没有任何区别。我想我应该寻找“WpfState.Reset”调用或类似的调用。是否可能是您试图在主UI线程之外的其他线程中打开窗口?这将导致一个例外。如果主线程中的窗口尚未打开,请尝试使用Dispatcher打开该窗口
据我回忆,渲染发生在一个辅助线程中,以防止阻塞UI线程。Hmm。我会看一看,尽管我不认为OnRender是在主U/I的另一个线程上调用的。我认为这篇文章可能更接近主题,尽管除了“不要那样做”之外,它没有提供任何建议: