如何终止一个线程

Mega1212 2005-01-30 09:50:16
一个线程,用来等待某事件的发生。

其它线程如何得知此线程是否终止,如何终止此线程?

...全文
117 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nicolas 2005-01-30
  • 打赏
  • 举报
回复
下面的一个方法供参考:
/*****************************************************************
** 函数名: TerminatePPT
** 输 入:
** 输 出:
** 功能描述:终止PowerPoint进程
** 全局变量:
** 调用模块:
** 作 者:
** 日 期: 2003-06-25
** 修 改:
** 版本: 2.0.0
****************************************************************/
BOOL CVConClient_Page_IE::TerminatePPT()
{
HANDLE hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32* processInfo=new PROCESSENTRY32;
int processID = 0;

processInfo->dwSize=sizeof(PROCESSENTRY32);
int index=0;

while(Process32Next(hSnapShot,processInfo)!=FALSE)
{
if(strcmp(processInfo->szExeFile,"POWERPNT.EXE") == 0)
{
processID = processInfo->th32ProcessID;
break;
}
}

CloseHandle(hSnapShot);

HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,processID);

if(hProcess==NULL)
{
delete processInfo;
return FALSE;
}

TerminateProcess(hProcess,0);
CloseHandle(hProcess);

delete processInfo;
processInfo = NULL;
return TRUE;
}
Mega1212 2005-01-30
  • 打赏
  • 举报
回复
谢谢:D

老夏Max 2005-01-30
  • 打赏
  • 举报
回复
线程终止存在两种情况:
1、线程函数结束,线程自动终止;
2、采用AfxEndThread、_endthreadex、TerminateThread强制终止线程。
你可以为这个线程设置一个BOOL标志位,在线程创建的时候将其设为TRUE,在线程结束的时候,在线程函数中将其设为FALSE,全局变量或者是创建线程的类的成员变量都可。另外可以通过事件告诉其他线程这个线程结束了。
Mega1212 2005-01-30
  • 打赏
  • 举报
回复
UP上去

15,471

社区成员

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

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