如何结束等待和线程

daphant 2003-06-03 11:11:53
我的线程是这样
_UINT ThreadTest(LPVOID lparam)
{
EventRegister = CreateEvent(NULL, TRUE, FALSE, "EventRegister");
while(true)
{
::WaitForSingleObject(EventRegister, INFINITE);
......
}
return 0;
}
请问当程序被关闭的时候如何结束这个无限期等待事件,和这个线程。因为每次关闭后总发现,这个程序仍然在系统进程里面,关不掉
...全文
33 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yh824 2003-06-09
  • 打赏
  • 举报
回复
up
nuaawenlin 2003-06-03
  • 打赏
  • 举报
回复
TerminateThread();
daphant 2003-06-03
  • 打赏
  • 举报
回复
To 飘人:我用了那个函数,但是在任务管理器里看 进程,我的程序还在里面,我要是强行结束,任务管理器就会死掉,什么问题呀?是不是等待事件导致的?
To 山豆根:由于我的程序是不断循环等待一些事件的发生,所以程序一般会停到Waitforsingleobject那一句上,我估计是停在那个地方退不出去,还有方法吗?
Carapee 2003-06-03
  • 打赏
  • 举报
回复
定义一个全局变量
BOOL bExitFlag = FALSE;


_UINT ThreadTest(LPVOID lparam)
{
EventRegister = CreateEvent(NULL, TRUE, FALSE, "EventRegister");
while(true)
{
if (bExitFlag == TRUE)
return 0;
::WaitForSingleObject(EventRegister, INFINITE);
......
}
return 0;
}

然后,在你需要关闭线程的地方:
bExitFlag = TRUE;
HANDLE hEvent = OpenEvent("EventRegister");
SetEvent(hEvent);

15,471

社区成员

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

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