DLL在卸载前如何让线程正常返回再退出
举例一个线程
HANDLEg_hThread = NULL;
DWORD ThreadProc( LPVOID lpParameter )
{
DWORDi = 0;
while (g_bIsRunThread)//全局变量.初始为TRUE
{
i++;
Sleep(5000);
}
return 0;
}
在DLL载入的时候g_hThread = CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, NULL, 0, NULL);
我现在想要把DLL卸载掉.之前就必须要先让这个线程正常返回..
所以这样子写?
BOOL CTestMyApp::ExitInstance(void)
{
CWinApp::ExitInstance();
g_bIsRunThread = FALSE;
if (NULL != g_hThread1)
{
::WaitForSingleObject(g_hThread1, INFINITE);
CloseHandle(g_hThread1);
}
return TRUE;
}
但是这样子做了之后.DLL所加载的目标进程却假死了....我应该要怎么样做才能让这个线程先正常返回.然后再执行卸载DLL呢.
[解决办法]
在目标进程单起个线程处理DLL加载和退出吧。不然好像也没什么别的好办法