これを達成するための最良の方法は何ですか: メイン スレッド (スレッド A) は、他の 2 つのスレッド (スレッド B とスレッド C) を作成します。スレッド B と C は大量のディスク I/O を実行し、最終的に作成したリソースをスレッド A に渡して外部 DLL ファイルのメソッドを呼び出す必要があります。このメソッドでは、スレッドを作成したスレッドが正しく呼び出される必要があるため、スレッド A だけが呼び出すことができます。 .
これまでにスレッドを使用したのは Windows フォーム アプリケーションだけであり、invoke メソッドはまさに私が必要としていたものでした。このプログラムは Windows フォームを使用しないため、使用する Control.Invoke メソッドはありません。
私のテストでは、変数がスレッド A で作成された場合、スレッド B/C から問題なくアクセスして変更できることがわかりました。これは私には非常に間違っているようです。Winforms では、他のスレッドで作成されたものにアクセスしようとすると、エラーがスローされると確信していました。複数のスレッドから変更するのは安全ではないことはわかっていますが、安全なコーディングを保証するために、.NET がそれを完全に禁止することを本当に望んでいました。.NET はこれを行いますか?私は船に乗り遅れているだけですか?それとも WinForm アプリでのみ行うのでしょうか?
一見これを許可しているように見えるので、OS のようにフラグを作成し、スレッド A から監視して、変更があるかどうかを確認します。存在する場合は、メソッドを呼び出します。イベント ハンドラーは本質的にこれを行うわけではないので、メイン スレッドで呼び出されたイベントを何らかの方法で使用できますか?