找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4785|回复: 0

[分享] 自定义消息正常退出线程

[复制链接]

29

主题

134

回帖

4

精华

论坛元老

积分
5970
QQ
发表于 2010-7-25 10:52:41 | 显示全部楼层 |阅读模式
大家都碰到这么一种情况,开启一个线程循环,但是不需要这个它的时候,很多人选择两种方式1.TerminateThread 强杀2.不就是一个线程吗,不管了
强杀如果有许多资源并不会释放,不管了一个线程其实也是一个很大的开销,先提供一种方法正常退出
_beginthread(_ThreadProc,0,NULL);开启一个线程

线程处理函数
VOID _ThreadProc(LPVOID lpVOid)
{
while (TRUE)
{
  MSG msg;
  ThreadId=GetCurrentThreadId();//获得线程ID

....do something  you  want to do
  while ( GetMessage(&msg, NULL, 0, 0))//自定义线程消息循环
  {
   if(msg.message==WM_MY_MESSAGE1)//自定义消息WM_MY_MESSAGE1 (WM_USER+100)
   {
    ExitThread(1);
   }

   TranslateMessage(&msg);
   DispatchMessage(&msg);

  }
}


}
当你什么时候不需要了它了
PostThreadMessageW(ThreadId,WM_MY_MESSAGE1,NULL,NULL);
挺简单吧

评分

参与人数 1 +100 +100 水晶币 +100 +100 收起 理由
Tesla.Angela + 100 + 100 + 100 + 100 精品文章

查看全部评分

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表