HANDLE hRequestExitEvent=NULL; //我们定义一个全局的事件对象用于线程检查它是否应该结束自己
typedef struct
{
BOOL exit;
}Info;
void tTest()
{
//,,省略各种判断,各种读取,各种Sleep(xx);
}
UINT mThread(LPVOID pParam)
{
Info *info = (Info*)pParam;
while (!info->exit)
{
tTest();
if(WaitForSingleObject(hRequestExitEvent,0) !=WAIT_TIMEOUT)
{
//接收到信号,请求线程退出....
return -1;
}
}
return 0;
}
void main()
{
//各种初始化
hRequestExitEvent=CreateEvent(NULL,TRUE,FALSE,NULL); //创建一个事件对象,
//并且初始化为无线号状态
CWinThread *pWinThread=AfxBeginThread(mThread,&Info);
//当你想要结束worker线程的时候,就把event置为有信号状态
SetEvent(hRequestExitEvent);
WaitForSingleObject(pWinThread->m_hThread,INFINITE); //等待线程安全返回
return 0;
}