14.3.2 终止线程
当一个线程终止时,关闭该线程所有属性的所有对象句柄,一般来说线程的终止包括正常终止和异常终止。正常终止是控制函数到达函数中的结束点,该线程即终止,对于工作者线程来说,也可以利用函数AfxEndThread();来终止线程,其函数原型如下:
- void AfxEndThread( UINT nExitCode );
参数nExitCode表示线程的退出码。
用户界面线程可以通过调用PostQuitMessage()函数发送退出消息结束线程。函数原型如下:
- void PostQuitMessage(int nExitCode);
线程的异常终止是由于线程内部出现无法终止的情况,在其他线程中强行结束该进程,可以调用函数BOOL TerminateThread();实现异常终止。函数原型如下:
- BOOL TerminateThread(HANDLE hThread, DWORD dwExitCode);
参数hThread表示要终止的线程的句柄,在创建线程时的返回的指针中的成员变量里面可以得到线程的句柄。dwExitCode表示退出码。如果调用失败,函数返回0,否则返回非0值。需要注意的是,调用该函数以后,应该利用CloseHandle函数关闭句柄,释放线程所占用的堆栈资源。
警告:必须在CloseHandle()函数调用前调用TerminateThread()函数,否则会发生无效句柄的错误。
【责任编辑:
云霞 TEL:(010)68476606】