前提】 在某子线程类中,初始化为无信号状态,到线程 执行部分时,从某个时刻开始m_hStopEvent就变了有信号,导致子线程 退出(//1111处退出)。
可执行部分的代码如下,整个工程中只有一处是 设置有信号状态,但这一处始终没有被调用过。
//子线程执行部分:
while (1)
{
if (WaitForSingleObject(m_hStopEvent, 0) == WAIT_OBJECT_0)
{
//11111
break;
}
unsigned char *pdata = new unsigned char[50];
pdata = theCoreApp.SerialMgrPtr->GetData();
m_ProcData.AutoHeightFun(pdata);
//22222
Sleep(2);
//::ResetEvent(m_hStopEvent);
}
解决: 最后发现,子线程类的对象我使用的是 局部变量,改为全局变量后就好了