多线程 - 释放线程

线程的释放方式有两种:一种是线程在运行完成后自动释放,一种是手动释放。无论哪种都应在线程执行完释放,即线程停止后释放。要说明的是停止不是释放。

线程的停止要也有两种方式:一种是运行完自动停止,一种是因为execute方法中做了循环,需要设置标志位来停止。


1. 自动停止自动释放

这种情况时,execute方法中没有循环,执行完即停止,停止后就自动释放。

在execute开始时加入FreeOnTerminate := True;即可


2. 手动停止手动释放

首先说明,使用此种方法时不可以使用FreeOnTerminate := True;

处理方法如下,释放前必须调用WaitFor方法等待线程执行完后,否则Free的时候可能因为线程还未执行完报错。代码可参考http://evelee.net/blog/?id=24

MyThread.Terminate;
MyThread.WaitFor;
MyThread.Free;


标签:Delphi

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://evelee.net/blog/?id=25