現在、.NET アプリケーションの有線の問題をデバッグしています。特定のサーバー イベントへの反応として、フォームとコントロールを動的にプラグインします。もちろん、サーバーとの通信はスレッドで行われます。すべての UI 要素は、コントロールの呼び出しメカニズムを介して操作されます。
それでもクロススレッド例外が発生します。一部の子コントロールでは、親の InvokeRequired プロパティは false ですが、InvokeRequired プロパティは true です。したがって、これらの子はメイン スレッドの外で作成されたに違いありません。現在、この誤ったコントロールの作成につながる可能性のあるスレッドを探しています。Visual Studio のスレッド ビューのスクリーンショットでわかるように、"mainX" と呼ばれる多数のワーカー スレッド (これらはほんの一部です) があり、それらがどこから来たのかわかりません。
これは、「古い」メインスレッドの標準的な命名パターンですか? たぶん - わからない - Application.Run などの複数の呼び出しが原因でしょうか?
どんなアドバイスでも大歓迎です!
編集(要約すると)
InvokeRequired == false のルート コントロールと InvokeRequired == true の子コントロールがあります。それはどのように可能ですか?root.Controls.Add(child) はすでに例外をスローしているはずです。
スクリーンショットに示されているスレッドの命名パターンにつながる理由を知っている人はいますか?