您的位置:首页 > 其它

用事件判定线程的结束与否

2014-12-25 17:12 232 查看
本文由 代码助手软件 整理发布 内容与本软件无关
更惬意的读、更舒心的写、更轻松的发布

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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: