次のエラーが表示されます。
親とは異なるスレッドに属する DependencyObject は使用できません
それは一体何の意味ですか?英語ですか?親は凍結されていますか、それとも単に凍結可能ですか? エラーが解消される場合、親をフリーズできないようにする方法はありますか?
何が起こっていますか:
私は WPF アプリに 2 つの opengl winforms コントロールを持っていますが、これまでのところ、すべてがスムーズに機能しています (と思います)。ここで、1 つの winform コントロールがイメージを更新するときに、もう一方も同様に更新するように更新を追加しました。それは実際に機能していましたが、今ではそのエラーが発生しています。コードをステップ実行すると、ランダムな場所でクラッシュが発生します。これは、ガベージ コレクションの障害であると思われます (つまり、別のスレッドでの更新により、ガベージ コレクションが行われる何かが作成され、そのコレクションがランダムな時間に発生します)。
例外はメインの run メソッドでキャッチされ、InvalidOperationException です。
ここでストローをつかんでいます。どこから始めればよいですか?
編集:問題を引き起こしている呼び出しは次のようです:
if (imagePanel.InvokeRequired)
{
imagePanel.Invoke(new System.Windows.Forms.MethodInvoker(delegate{
imagePanel.ClearImages();
}));
}
else
{
imagePanel.ClearImages();
}
私はまだそれを追跡しています。その一連の行がコメントアウトされている場合でも、クラッシュは発生し、スレッド ステータスには「ちょうど終了した」スレッドがあります (したがって、ガベージ コレクションの仮定)。