怎么结束这个线程循环。

琴乐音 2008-07-04 02:26:36
void __cdecl CObserverThread::ObThreadFunc(void *ptr)
{
CObserverThread* pObserver = (CObserverThread*)ptr;
pObserver->EventLoop();
_endthread();

}
void CObserverThread::EventLoop()
{
Handle hEnent = CreateEvent();
while(WaitForSingleObject(m_hObEndEvent, 0) != WAIT_OBJECT_0) {

Handle handle = CreateFile();
ReadDirectoryChangesW(); //这个执行时,没有发现变化会阻塞。
}
}

大概代码如上, 我想结束这个循环:
closehandle(handle);
SetEvent(hEnent );
这样结束不掉。 要怎么结束它呢?
...全文
68 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
做鸡真好吃 2008-07-04
  • 打赏
  • 举报
回复
楼上好多星星...
liyinlei 2008-07-04
  • 打赏
  • 举报
回复
应该SetEvent(m_hObEndEvent)
superhard_d 2008-07-04
  • 打赏
  • 举报
回复
msdn中说,If dwMilliseconds is zero, the function tests the object's state and returns immediately.那么如果没有置信号量,返回值则不是WAIT_OBJECT_0,于是就变成了while(1),死循环。
cnzdgs 2008-07-04
  • 打赏
  • 举报
回复
在创建线程前先创建事件,把事件作为参数传给线程。或者使用命名事件。
孤客天涯 2008-07-04
  • 打赏
  • 举报
回复
SetEvent(hEnent );hEvent你定义的是一个局部变量,怎么可能结束掉?

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧