我在动态连接口中创建线程
TPARA para;para.OutTime = timeout;
para.s = m_sSocket;
para.bExit = FALSE;
para.IsExit = FALSE;
para.pbConnected = &m_bConnected;
hThread = CreateThread(NULL, NULL, TimeoutControl, (LPVOID)(¶), 0, &dwThreadId);
if (hThread == NULL) return -1;
创建成功,但是线程不能运行,为啥????
高手帮忙!难道动态来接口不能创建线程吗???
我自在咋样来做???
TPARA para;para.OutTime = timeout;
para.s = m_sSocket;
para.bExit = FALSE;
para.IsExit = FALSE;
para.pbConnected = &m_bConnected;
hThread = CreateThread(NULL, NULL, TimeoutControl, (LPVOID)(¶), 0, &dwThreadId);
if (hThread == NULL) return -1;
创建成功,但是线程不能运行,为啥????
高手帮忙!难道动态来接口不能创建线程吗???
我自在咋样来做???
当做成动态连接库的时候,看线程已经启动,
只是线程不能运行!
不为空!是0x00000ad0
是不是run-time没有设置成多线程DLL?
说的有可能,但是我不知道咋设????
"Debug Multithreaded DLL"
也不是这个原因!
这的不会,高手,我希望遇到高手!
期待高手!
LPDLLFUNC lpfnDllFunc = NULL;
HINSTANCE hDLL = NULL;
hDLL = AfxLoadLibrary("FishDQGate.dll");
if(hDLL)
{
lpfnDllFunc = (LPDLLFUNC)::GetProcAddress(hDLL,"Init");
if (!lpfnDllFunc)
{
AfxMessageBox("Function not found in DLL");
FreeLibrary(hDLL);
}
CRuntimeClass* pNewViewClass;
lpfnDllFunc(&pNewViewClass);
CWinThread * pthrea;
pthrea = new CWinThread;
pthrea->CreateThread();
}
else
{
AfxMessageBox("Dll not found!");
}
我用这种发试调用!有问题吗?? if(hDLL)
打着位置,程序进入线程,停止!线程没相应!
TPARA* para = new TPARA();para->OutTime = timeout;
para->s = m_sSocket;
para->bExit = FALSE;
para->IsExit = FALSE;
para->pbConnected = &m_bConnected;
hThread = CreateThread(NULL, NULL, TimeoutControl, para, 0, &dwThreadId);
During process startup and DLL initialization routines, new threads can be created, but they do not begin execution until DLL initialization is done for the process.
WINDOWS核心编程里提到了这个问题,。
而是最好不要那样编程,那样可能会产生不可预知的后果。