退出对话框时中止线程,似乎不容易
UINT WorkerThread( LPVOID pParam )
{
CWnd *pstaTimer=(CWnd*)pParam;
while(WaitForSingleObject(cStopEvent,1*1000)!=WAIT_OBJECT_0) {
//开始*****************************************************
for(int i=0;i<100;i++)
{
//TRACE("thread %d\n",i);
char szT[100];
sprintf(szT,"worker thread : %d",i);
pstaTimer->SetWindowText(szT);
Sleep(50);
}
}
return 0;
}
void CStarmonitorthreadDlg::OnOK()
{
m_pDrawDirThumbThread=AfxBeginThread(WorkerThread,this,THREAD_PRIORITY_ABOVE_NORMAL,0,0,NULL);
m_pDrawDirThumbThread->m_bAutoDelete=false;
hThread[0]=m_pDrawDirThumbThread->m_hThread;
}
void CStarmonitorthreadDlg::OnButton1()
{
cStopEvent.SetEvent();
WaitForMultipleObjects(1,hThread,TRUE,INFINITE); //不容易退出
AfxMessageBox("adsf");
return;
}