xitThread
结束线程最直观的方法是调用Win32API 函数ExitThread,线程执行完线程函数的代码
后,会隐式调用ExitThread 函数,自动终止。当调用该函数时,当前线程的堆栈被释放,如
果当前线程是进程的最后一个线程,则进程也终止。它的函数原型如下。
VOID ExitThread(
DWORD dwExitCode
);
函数中主要参数的意义如下。
? dwExitCode:线程的返回码。
2.Win32API 函数TerminateThread
TerminateThread 用于强行终止一个线程。如果调用成功,返回TRUE,否则返回FALSE。
它的函数原型如下:
BOOL TerminateThread(
HANDLE hThread,
DWORD dwExitCode
);
函数中主要参数的意义如下。
? hThread:要终止的线程句柄。
? dwExitCode:线程的终止码,可以调用函数GetExitCodeThread 来得到。
函数GetExitCodeThread 用于得到线程的退出码,如果调用成功,返回TRUE,否则返回
FALSE。它的函数原型如下:
BOOL GetExitCodeThread(
HANDLE hThread,
LPDWORD lpExitCode
);
函数中主要参数的意义如下。
? hThread:要终止的线程句柄。
? LpExitCode:存放线程终止状态的变量指针。
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·212·
3.C 运行库函数
C 运行库函数包括_endthread 和_endthreadex,分别用来结束一个由_beginthread 或
_beginthreadex 创建的线程。函数原型如下。需要注意的是,与ExitThread 相同,_endthreadex
并不关闭线程的句柄,因此,当调用这个函数之前,必须首先调用Win32 API 函数
CloseHandle。
void _endthread( void );
void _endthreadex(
unsigned retval
);
函数中主要参数的意义如下。
? retval:线程返回码。
4.函数AfxEndThread
函数AfxEndThread 用来终止由AfxBeginThread 创建的线程,它没有返回值,函数原型
如下:
void AFXAPI AfxEndThread(
UINT nExitCode,
BOOL bDelete = TRUE
);
函数中主要参数的意义如下。
? nExitCode:线程的返回码。
? bD