バックグラウンドで検索操作を実行し、リストボックス内のフォアグラウンドで結果をユーザーに表示するのに問題があります。
プログラムはSendMessage、クエリ結果をGUIに送り返すために使用します。
プログラムを閉じると、GUIはグローバル(揮発性)変数を「完了」としてマークMsgWaitForMultipleObjectsし、スレッドハンドルを待機してスレッドに参加します。
プログラムを中断すると、デッドロックが発生します。GUIはバックグラウンドスレッドの終了を待機していますが、バックグラウンドスレッドはで待機していSendMessageます。
MsgWaitForMultipleObjectsこのデッドロックは、100ミリ秒のタイムアウトを使用してループ内で呼び出した場合でも発生しQS_ALLINPUTます。理由がわかりません。
このデザインは正しいですか?スレッドが終了するのを待つより良い方法はありますか?
そうでない場合、問題は何ですか?