首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

DLL在卸载前怎么让线程正常返回再退出

2012-03-15 
DLL在卸载前如何让线程正常返回再退出举例一个线程HANDLEg_hThread NULLDWORD ThreadProc( LPVOID lpPa

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加载和退出吧。不然好像也没什么别的好办法

热点排行