我遇到了这个错误:
无法使用属于不同线程的 DependencyObject 的父级 Freezable
这是什么意思?它是英语吗?父级被冻结了还是只能被冻结?如果可以使错误消失,有没有办法使父级无法被冻结?
发生了什么:
我在 WPF 应用程序中有两个 OpenGL WinForms 控件,到目前为止,一切都很顺利(我想)。现在,我添加了一个更新,以便一个 WinForms 控件更新图像时,另一个控件也应该更新。那实际上曾经起作用,但现在我得到了那个错误。通过代码跟踪,崩溃会在随机位置发生,这让我相信这是个垃圾回收故障(即,在另一个线程中进行的某些更新正在创建某个将在随机时间进行垃圾回收的东西)。
异常在主运行方法中捕获,它是 InvalidOperationException。
我已经无从下手了。我该从哪里开始?
编辑:看起来引起问题的调用是这个:
if (imagePanel.InvokeRequired)
{
imagePanel.Invoke(new System.Windows.Forms.MethodInvoker(delegate{
imagePanel.ClearImages();
}));
}
else
{
imagePanel.ClearImages();
}
我仍在追踪它;如果那一系列的行被注释掉,崩溃仍然会发生,并且线程状态有一个“刚刚结束”的线程(因此假设是垃圾回收)。