MFC DLL から複数のスレッドを作成する方法
スレッドごとにローカル格納領域を割り当てる TlsAlloc などの Win32 スレッド ローカル ストレージ (TLS) 関数を使用すると、MFC DLL で複数のスレッドを安全に作成できます。ただし、初期化中は例外です。 一方、MFC DLL で __declspec(thread) を使用してスレッド ローカル ストレージを割り当てた場合は、クライアント アプリケーションを DLL に暗黙にリンクする必要があります。 クライアント アプリケーションを DLL に明示的にリンクする LoadLibrary を呼び出しても、DLL を読み込むことはできません。 MFC DLL 内で複数のスレッドを作成する方法の詳細については、サポート技術情報の「PRB: Calling LoadLibrary() to Load a DLL That Has Static TLS (Q118816)」を参照してください。
スタートアップ (初期化) 中に MFC スレッドを新規作成する MFC DLL をアプリケーションで読み込むと、応答が停止します。 たとえば、以下の関数の中で AfxBeginThread または CWinThread::CreateThread を呼び出してスレッドを作成しようとした場合です。
レギュラー DLL 内の CWinApp 派生オブジェクトの InitInstance
レギュラー DLL 内の DllMain 関数または RawDllMain 関数
拡張 DLL 内の DllMain 関数または RawDllMain 関数
初期化中のスレッド作成の詳細については、サポート技術情報の「PRB: Cannot Create an MFC Thread During DLL Startup (Q142243)」を参照してください。