为了强制终止一个线程,您可以使用TerminateThread()函数,原型如下:
BOOL TerminateThread(
HANDLE hThread, // handle to thread
DWORD dwExitCode // exit code
);
第一个参数是调用CreateThread的返回值,第二个参数是指定线程的退出码,该值可以用GetExitCodeThread函数来查看。
该函数导致指定线程终止,一旦调用目标线程不能再执行任何user-mode的代码,线程的初始栈也得不到释放,依附于该线程的DLL也得不到该线程已经终止的通知。
因为此函数的强制性,所以会导致一些情况发生:
如果目标线程占有crital section,将不被释放;
如果线程正从堆中申请内存,堆的锁将不被释放;
此外,如果正在执行kernel32的调用或者使用shared DLL,也会产生影响。
所以,如果您强制退出,除了考虑主动地释放资源之外,编码时还要还要考虑会出现上述的一些问题。
摘自:http://www.3qu3.com/bianchengyuyanyuanmafenxi/2010-11-29/10550.html