本文由 代码助手软件 整理发布 内容与本软件无关 更惬意的读、更舒心的写、更轻松的发布
HANDLE g_hTic1=CreateEvent(NULL,TRUE,TRUE,NULL); //自动复原 有信号
UINT Tic1(LPVOID pTView) { ResetEvent (g_hTic1);//重置为无信号 CMyView *pView=(CMyView *)pTView; int nSeconds=0; int nNeedSeconds=pView->m_nSecond1; int nLeftMinite=0; int nLeftSeconds=0; while(nSeconds<=nNeedSeconds&&!pView->m_bStopTic1) { Sleep (1000); nSeconds++; nLeftMinite=(nNeedSeconds-nSeconds)/60; nLeftSeconds=(nNeedSeconds-nSeconds)%60; pView->ChangeDaojishi (pView->pDaojishi1,nLeftMinite,nLeftSeconds); pView->InvalidateLeft (); } SetEvent(g_hTic1); //有信号 return 1; }
//启动线程时,若正在运行,则先关闭之
m_bStopTic1=TRUE; WaitForSingleObject (g_hTic1,INFINITE); //线程结束执行时, 可能有阻塞 如执行 pctr-> 及 SetWindowText 要注意判断 m_bStopTic1=FALSE; m_nSecond1=nSeconds; AfxBeginThread(Tic1,this);
结束程序时 关闭线程
~CIView() { //AfxMessageBox (L"析构"); m_bStopTic1=TRUE; WaitForSingleObject (g_hTic1,INFINITE); }