STA スレッド同期を行うには何が最適でしたか?
メインと 2 番目の 2 つの STA スレッドを持つダイアログ ベースの MFC アプリケーションがあります。メイン UI スレッドで COM オブジェクトを作成しました。
2 番目のスレッドから COM インターフェイスを呼び出します。メイン スレッドでは、メイン スレッドが続行する前に 2 番目のスレッドが確実に終了するように、ループを使用してスレッドを待機します。このループは、MsgWaitForMultipleObjectsEx(timout=500) をループ的に呼び出します。
待っているとすぐに行き詰まりました。その後、MFC メッセージ ポンプである AfxInternalPumpMessage() は、呼び出しのブロックにのみ役立ち、デッドロック状態にはまったく役立たないことに気付きました。
次に、待機ループに Peek/Translate/DispatchMessage コードを追加すると、すべてが機能しました。
さて、Peek/Translate/DispatchMessage ループを手作業でコーディングしないと、STA スレッドの同期をまったく行うことができないようですか? 待機呼び出しがあると、デッドロックが発生します。では、STA スレッドを同期するための最善または標準的な方法は何ですか?
ありがとう!