为了强制终止一个线程,您可以使用TerminateThread()函数,它的原型如下:
BOOL TerminateThread(
  HANDLE hThread,    // handle to thread
  DWORD dwExitCode   // exit code
);第一个参数是调用CreateThread的返回值,第二个参数是指定线程的退出码,该值可以用GetExitCodeThread函数来查看。该函数导致指定线程终止,一旦调用目标线程不能再执行任何user-mode的代码,线程的初始栈也得不到释放,依附于该线程的DLL也得不到该线程已经终止的通知。因为此函数的强制性,所以会导致一些情况发生:
如果目标线程占有crital section,将不被释放;
如果线程正从堆中申请内存,堆的锁将不被释放;
此外,如果正在执行kernel32的调用或者使用shared DLL,也会产生影响。所以,如果您强制退出,除了考虑主动地释放资源之外,编码时还要还要考虑会出现上述的一些问题。如果您需要进一步的信息,请参看:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/prothred_7h2c.asp- 微软全球技术中心 VC技术支持本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。为了为您创建更好的讨论环境,请参加我们的用户满意度调查
(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。