16,548
社区成员




void CDetcApplicationDlg::OnBnClickedStart()
{
g_bExtiThread = false; //停止状态为假
//..........省略代码.........
pThread = AfxBeginThread(threadFun, this,0,0, CREATE_SUSPENDED); //创建threadFun处理线程
if (pThread)
{
pThread->m_bAutoDelete = false;
pThread->ResumeThread();
}
}
void CDetcApplicationDlg::OnBnClickedStop()
{
if (pThread)
{
g_bExtiThread = true; //停止状态为真
if (WAIT_OBJECT_0 == WaitForSingleObject(pThread->m_hThread,INFINITE)) //等待线程结束,偶发结束线程失败
pThread = NULL; //将线程指针置为空
}
}
UINT CDetcApplicationDlg::threadFun(LPVOID lpParam)
{
CDetcApplicationDlg * pDlg = (CDetcApplicationDlg *)lpParam;
while(1)
{
if (g_bExtiThread)
{
AfxEndThread(0);
return 0;
}
//..........省略代码.........除了后台的处理工作,还更新一个listctrl的值
}
return 0;
}