|
大家都碰到这么一种情况,开启一个线程循环,但是不需要这个它的时候,很多人选择两种方式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);
挺简单吧 |
评分
-
查看全部评分
|