Я получаю эту ошибку:
Невозможно использовать объект DependencyObject, принадлежащий другому потоку, чем его родительский Freezable
Что это вообще значит? Это на английском? Родитель заморожен или просто замораживается? Любой способ сделать родителя не замораживаемым, если это устранит ошибку?
Что происходит:
У меня есть два элемента управления winforms opengl в приложении WPF, и до сих пор все работало гладко (я думаю). Теперь я добавил обновление, так что когда один элемент управления winform обновляет изображение, другой должен также. Это на самом деле раньше работало, и теперь я получаю эту ошибку. При выполнении кода происходит сбой в случайных местах, что позволяет мне полагать, что это ошибка сборки мусора (то есть, какое-то обновление в другом потоке создает что-то, что собирает мусор, и эта сборка происходит в случайное время). 1009 *
Исключение перехватывается в методе основного запуска, и это исключение InvalidOperationException.
Я хватаюсь за соломинку здесь. С чего начать?
РЕДАКТИРОВАТЬ: похоже, что вызов, который вызывает проблему, это:
if (imagePanel.InvokeRequired)
{
imagePanel.Invoke(new System.Windows.Forms.MethodInvoker(delegate{
imagePanel.ClearImages();
}));
}
else
{
imagePanel.ClearImages();
}
Я все еще выслеживаю это; если этот ряд строк закомментирован, сбой все еще происходит, и состояние потока имеет поток «только что закончился» (отсюда и предположение о сборке мусора).