スレッドAがスレッドBが作成されているとき、スレッドAがスレッドBが終了するまでWaitForSingleObjectを使用して待機しています。スレッドハンドルを持つWaitForSingleObjectがregsvr32.exeを実行している間にスタックする
問題は、スレッドBがスレッドの「thread_func」から戻っても、スレッドA が通知されないことです。。
thread_func(スレッドBのメイン関数)の最後にトレース(OutputDebugString)を追加したので、スレッドBが実行を終了してもスレッドAがWaitForSingleObjectから抜けることはありません。
ここで、このコードはCOMオブジェクトにあり、上記のシナリオはregsvr32.exeを呼び出すと起きていると付け加えなければなりません(スタックされてしまいます!)ので、スレッドAはDLLMain。
スレッドAが通知されない理由は何ですか?!?!
あなたは絶対に正しいです!私はこのようにその作業を知らなかった!だから、私は別のイベントを使用して、エンドスレッドBのスレッドを通知すると思います。この回答に+1 – TCS
+1 DllMainが(システムコールとAPIコールを行うコードを含む)任意の重要でないコードパスを呼び出すと、問題が発生するだけです。 – selbie