Delphi中的线程类--之(3)
Terminate过程结束线程。Terminate过程只是简单地设置线程类的Terminated标志,如下面的代码:
procedure TThread.Terminate; begin FTerminated := True; end; 所以线程仍然必须继续执行到正常结束后才行,而不是立即终止线程,这一点要注意。 在这里说一点题外话:很多人都问过我,如何才能“立即”终止线程(当然是指用TThread创建的线程)。结果当然是不行!终止线程的唯一办法就是让Execute方法执行完毕,所以一般来说,要让你的线程能够尽快终止,必须在Execute方法中在较短的时间内不断地检查Terminated标志,以便能及时地退出。这是设计线程代码的一个很重要的原则! 当然如果你一定要能“立即”退出线程,那么TThread类不是一个好的选择,因为如果用API强制终止线程的话,最终会导致TThread线程对象不能被正确释放,在对象析构时出现Access Violation。这种情况你只能用API或RTL函数来创建线程。 如果线程处于启动挂起状态,则将线程转入运行状态,然后调用WaitFor进行等待,其功能就是等待到线程结束后才继续向下执行。关于WaitFor的实现,将放到后面说明。 线程结束后,关闭线程Handle(正常线程创建的情况下 更多相关文章
|
推荐文章
精彩文章
|