Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF OnRender出现问题后如何恢复_Wpf_Exception - Fatal编程技术网

WPF OnRender出现问题后如何恢复

WPF OnRender出现问题后如何恢复,wpf,exception,Wpf,Exception,刚刚发生了一个有趣的问题,由以下一系列事件引起: 从WPF OnRender覆盖调用的代码引发了一个异常——这并没有什么神秘之处——在某些viewmodel代码中这只是一个小错误 异常未处理,因此由DispatcherUnhandledException处理程序拾取 DispatchedUnhandledException处理程序尝试打开WPF窗口以显示异常、允许报告等。窗口打开失败,从全局异常处理程序引发另一个异常,从而终止应用程序 看来WPF是个例外!在OnRender执行期间尝试打开一个新

刚刚发生了一个有趣的问题,由以下一系列事件引起:

从WPF OnRender覆盖调用的代码引发了一个异常——这并没有什么神秘之处——在某些viewmodel代码中这只是一个小错误

异常未处理,因此由DispatcherUnhandledException处理程序拾取

DispatchedUnhandledException处理程序尝试打开WPF窗口以显示异常、允许报告等。窗口打开失败,从全局异常处理程序引发另一个异常,从而终止应用程序

看来WPF是个例外!在OnRender执行期间尝试打开一个新窗口,会发生各种不好的事情,从WPF中的CreateWindowEx引发的第二个Win32Exception,到如果我们尝试执行MessageBox之类的操作,应用程序会立即终止。当我们检测到双重异常时,在异常处理程序中显示

我今天在处理这种情况方面没有什么特别的问题,但有一个普遍的问题:


有没有办法从OnRender处理程序中恢复WPF状态,以便普通WPF活动可以继续?我尝试在OnRender中捕获异常并在重新刷新之前调用dc.Close,但这似乎没有任何区别。我想我应该寻找“WpfState.Reset”调用或类似的调用。

是否可能是您试图在主UI线程之外的其他线程中打开窗口?这将导致一个例外。如果主线程中的窗口尚未打开,请尝试使用Dispatcher打开该窗口


据我回忆,渲染发生在一个辅助线程中,以防止阻塞UI线程。

Hmm。我会看一看,尽管我不认为OnRender是在主U/I的另一个线程上调用的。我认为这篇文章可能更接近主题,尽管除了“不要那样做”之外,它没有提供任何建议: