COM オブジェクトで多くのメソッドを呼び出すメイン STA スレッドと、同じオブジェクトでも多くの作業を行うセカンダリ STA スレッドがあります。メイン スレッドとセカンダリ スレッドを並行して動作させたい (つまり、メイン スレッドとセカンダリ スレッドからインターレース出力を期待している)。時々メイン スレッドでメッセージを送信する必要があることはわかっています。C++ で Get/Translate/DispatchMessage を呼び出すと、うまくいきます。
しかし、C#で同じ戦略を機能させるのに問題があります。最初に、メイン スレッドで CurrentThread.Join() を使用して、2 番目のスレッドに制御を渡しました。うまくいきませんでした。次に、Application.DoEvents() に目を向けました。2 番目のスレッドを実行したいときはいつでも、メイン スレッドで呼び出しました。その結果、2 番目のスレッドはすぐにコントロールを取得し、手放しません。2 番目のスレッドがすべて完了するまで、メイン スレッドは続行できません。
Application.DoEvents() がすべての待機中のイベントを処理するというドキュメントを読みましたが、GetMessage() は 1 つのメッセージのみを取得します。
どうするのが正しいのでしょうか?Get/Translate/DispatchMessage に相当する C# はありますか?
ありがとう
更新: 2 番目のスレッドの実行速度が速すぎて、大量の COM 呼び出しメッセージをメイン STA スレッドに送信しています。2番目のスレッドに遅延を追加して、速度を落としました。現在、2 つのスレッドが基本的に並行して実行されています。しかし、GetMessage/TranslateMessage/DispatchMessage に相当する C# があるかどうかを知りたいです。