如何判断线程状态?
如何判断线程状态?
HANDLE hThread;
hThread=CreateThread(NULL,0,(unsigned long(_stdcall*)(void*))GetRecvMessageThread, (LPVOID)this,0,NULL);
CloseHandle(hThread);
[解决办法]
windows api 只能知道线程死没死,想知道状态,自己维护全局变量吧,一个写,一个读,不需要同步的,更高级的就用事件,写完了通知再读
[解决办法]
直接用GetExitCodeThread()函数,它的返回值表明了线程的状态
[解决办法]
BOOL GetExitCodeThread(
HANDLE hThread,
LPDWORD lpExitCode
);
第一个参数线程句柄 ,是输入值
第二个参数是输出值,保存返回码 和STILL_ACTIVE 只有这两种了. 第一种表示线程已经结束了.
如果还要其它的状态.只有visualassist4680 所说的自己维护一个状态变量了
[解决办法]
LZ可以试试看 在
Void CCCC::Send(CString strDA, CString strContent, int nID)
的最后加一个全局变量m_bEnd,判断是否读写完成,从而决定是否执行再次创建.。
void CCCCC::OnTimer(UINT nIDEvent)
{
CDialog::OnTimer(nIDEvent);
if(m_bEnd)
OnTime();
}
[解决办法]
你不要调用CloseHandle(hThread);
把hThread保存起来
DWORD ExitCode;
然后用GetExitCodeThread( hThread, &ExitCode); 就可以了