11

次のエラーが表示されます。

親とは異なるスレッドに属する 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();
        }

私はまだそれを追跡しています。その一連の行がコメントアウトされている場合でも、クラッシュは発生し、スレッド ステータスには「ちょうど終了した」スレッドがあります (したがって、ガベージ コレクションの仮定)。

4

1 に答える 1