在线程函数里面是每隔1分钟执行一次的。
while(1)
{
if(!m_bLived)
AfxEndThread();
Sleep(60000);//每隔一分钟
... //要做的事情
}这样一来每次退出的时候就得等待一分钟了?能不能让线程很快就退出呢?
是正常退出呀,不希望有什么内存没释放之类事情了
while(1)
{
if(!m_bLived)
AfxEndThread();
Sleep(60000);//每隔一分钟
... //要做的事情
}这样一来每次退出的时候就得等待一分钟了?能不能让线程很快就退出呢?
是正常退出呀,不希望有什么内存没释放之类事情了
while(i < 60)
{
++i;
if(!m_bLived)
AfxEndThread();
Sleep(1000);
}
你想在什么时候退出,Sleep(1000)中退出吗?
我是想能不能在CWnidThread *pThread指针上面有什么方法的?
{
DWORD ret = WaitForSingleObject(m_hEvent, 60000);
if (WAIT_OBJECT_0 == ret || WAIT_FAILED == ret)
return ret;
... //要做的事情
}想停止时SetEvent(m_hEvent);
我以前就经常用event去处理这个问题。Sleep()是无论怎么样都要等够设定的时间。WaitForSingleObject是等待内核对象的有信号状态,也有个设定的时间。当event变成有信号状态时,立即结束等待。如果event始终为无信号状态,则会等待到最大设定时间。也就是说WaitForSingleObject有两个结束等待的条件。一个是信号量变成有信号状态,一个是达到规定时间,满足其一即可,而sleep只有一个结束等待的条件。通过手动设置有信号状态使其立即结束等待