FreeOnTerminate 是 TThread 的一个属性。但是,不幸的是线程结束时,对象不会变成 nil。
您可以这样试试看,启动线程:
if MyThreadThrd = nil then
begin
MyThreadThrd := TMyThread.Create(true);
MyThreadThrd.FreeOnTerminate := true;
MyThreadThrd.Resume;
end;
线程执行部分:TMyThread.Execute
begin
// do your job
MyThread := nil;
end;
另外,线程同步用信号灯比较好,全文检索一下:“信号灯 AND 线程”吧。