SHBrowseForFolderで固まった…私の場合


問題の切り分け

MFCのCDialogアプリケーションにCLI/C++でのIPC通信を行うDLLを組み込んだ場合のみ現象化する。
いろいろ調べると以下の現象とよく似ている。
MFC アプリケーションは、Visual C++ .net または Visual C++ の 2005 年には、マルチ スレッド アパートメントとしてアプリケーションを初期化するときに応答を停止します。

結果

IPC通信する処理を組み込むと現象化することからアプリケーションの初期化時にCoInitializaEx(NULL,COINIT_APARTMENTTHREADED)
アプリケーションの終了時にCoUninitialize()を呼ぶことでいまのところ期待動作をしている。

考察

COM関連でのイベント処理でどのスレッドでイベントを処理するかがデフォルトと違う場合にのみ現象化する。。。?