通过Doevent()方式 主线程安全关闭子线程

来源:互联网 发布:淘宝店怎么装修视频 编辑:程序博客网 时间:2024/06/05 00:25

参考http://blog.csdn.net/lwbeyond/article/details/5686165

1. 主线程定义

HANDLE hEvent;

2,主线程新建线程

UINT MyThread(LPVOID pParam){CMFCApplication2Dlg *pDlg = (CMFCApplication2Dlg*)pParam;CProgressCtrl  *pPro = &pDlg->m_Progress;//CProgressCtrl  *pPro = &pDlg->m_Progress;while (1){for (int n = 0; n<101; n++){n++;//pPro->SetPos(n);//pPro->OffsetPos(1);pPro->SetStep(1);pPro->StepIt();Sleep(100);if (WAIT_OBJECT_0 == WaitForSingleObject(hEvent, INFINITE))//接收主程信号{return 0;//正常退出  }}}return 0;}

2.主线程执行

void CMFCApplication2Dlg::OnBnClickedButton1(){ AfxBeginThread(MyThread, (LPVOID)this);//线程执行hEvent = CreateEvent(NULL,FALSE, TRUE,NULL);//创建event事件  SetEvent(hEvent);//发送信号}

0 0