线程不能退出,求大神帮忙看看
BOOL CSignalDlg::Init(const int nSourceID )
{
UNREFERENCED_PARAMETER(nSourceID);
m_hExitEvent = ::CreateEvent( NULL, TRUE, FALSE, NULL );
if( m_hExitEvent == NULL)
{
//SafeSprintf( lpErrorMsg, nSize, "%s", "CreateEvent 失败!!!" );
return FALSE;
}
return TRUE;
};
void CSignalDlg::Exit()
{
SetEvent(m_hExitEvent);
WaitForSingleObject(m_hHandle, INFINITE);
// AfxMessageBox("线程已经退出!");
}
LONG CSignalDlg::DoJob()
{
while (1)
{
// 等待退出事件
if(WaitForSingleObject(m_hExitEvent, 100) == WAIT_OBJECT_0)
{
AfxMessageBox("线程退出!");
break;
}
m_data++;
CString data;
data.Format("%d", m_data);
m_edit.SetWindowText(data);
}
// AfxMessageBox("线程退出!");
return 0;
}
//上述代码的意思是我在主线程中发信号给子线程让子线程退出,并且主线程等待着子线程完全退出,
但是我发现我发了信号后界面就卡着了,跟踪发现子线程并没有退出。求大神帮忙解决。
注:线程函数中调用doJob()