建議使用 Visual Studio 2017

MFC DLL 可以建立多個執行緒嗎?

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

初始化期間之外,只要 MFC DLL 使用 Win32 執行緒區域儲存區 (Thread Local Storage,TLS) 函式 (例如 TlsAlloc) 來配置執行緒區域儲存區,它便可以安全地建立多個執行緒。 然而,如果 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 在應用程式載入它時停止回應。 這個部分還包括每當執行緒是在內部呼叫 AfxBeginThreadCWinThread::CreateThread 所建立之時:

  • 標準 DLL CWinApp 衍生物件的 InitInstance

  • 標準 DLL 裡提供的 DllMainRawDllMain 函式

  • 擴充 DLL 裡提供的 DllMainRawDllMain 函式

如需在初始化過程中建立執行緒的詳細資訊,請參閱知識庫文件<PRB: Cannot Create an MFC Thread During DLL Startup>(Q142243)。

DLL 常見問題集

顯示: