线程如何结束

newman1982 2005-03-30 06:09:53
我建立了一个UI,却不知道如何结束他。
PostQuitMessage()是在主线程中使用,还是在子线程中使用。
我想在主线程中结束子线程,请问怎样做?
我使用了一个静态变量,可是线程中的却总是不改变,不知道为什么?
静态变量写在哪里?线程类的头文件,还是应用程序的头文件?
请各位指点??
...全文
84 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
54gym 2005-03-31
  • 打赏
  • 举报
回复
VOID ExitThread( DWORD );
p_q 2005-03-31
  • 打赏
  • 举报
回复
ExitThread函数
Te r m i n a t e T h r e a d函数
newman1982 2005-03-31
  • 打赏
  • 举报
回复
谢谢回复
还有问题,我尝试用测CEvent,但是主线程SetEvent之后,子线程中事件还是没有激活,不只问什么?
代码如下:
static CEvent Mstop(FALSE,TRUE,NULL,NULL);
然后启动线程
Mstop.SetEvent();
m_pSThread=new CSendThread(this);
m_pSThread->CreateThread();
在子线程中:
if(WaitForSingleObject(Mstop.m_hObject,5)!=WAIT_OBJECT_0)
{
PostThreadMessage(WM_QUIT,-1,0);//结束线程,
}

else
{
//some work
}
可是程序运行时,送是会直接结束线程,我试过,要是在子线程中使用SetEvent(),就可以正常工作,但主线成就不能将它变为无信号状态了。
难道只能在子线程中设置有无信号??
请指点?
另外PostThreadMessage(WM_QUIT,-1,0);的使用是否正确,运行到这里也会有错误。
newman1982 2005-03-31
  • 打赏
  • 举报
回复
ExitThread( DWORD );PostQuitMessage()
ExitCode如何确定?
为什么ExitThread( 1);能正常工作?
还有我在主线程中使用GetExitCodeThread(m_pSThread->m_hThread,lpExitCode)
为什么得到的总不是STILL_ACTIVE,可是我的县城确实已经开始工作了呀
oyljerry 2005-03-30
  • 打赏
  • 举报
回复
应该是volatile
oyljerry 2005-03-30
  • 打赏
  • 举报
回复
变量用Voilate修饰一下,定义成全局的就可以了

15,471

社区成员

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

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