是了好多种方法,都好像有问题,甚至导致操作系统Dump。 楼上的 讲的是一种方法,但是一旦释放就会出错。 原因是在线程Excute中用: while not Terminated do begin .... end; 采用其他的方式如: MyThread.Terminate; MyThread.Waifor; MyThread.Free; 也不行。没有释放掉线程.... 采用Api函数(TerminateThread(myThread.Handle,0))倒是可以释放掉,但是在重新创建的时候,就会出错... 真的搞不懂,如何才能够安全的杀掉一个线程,让他把资源都释放出来...而且是安全的...
线程.Free;
线程 := nil;或者线程.Terminate
楼上的 讲的是一种方法,但是一旦释放就会出错。
原因是在线程Excute中用:
while not Terminated do
begin
....
end;
采用其他的方式如:
MyThread.Terminate;
MyThread.Waifor;
MyThread.Free; 也不行。没有释放掉线程....
采用Api函数(TerminateThread(myThread.Handle,0))倒是可以释放掉,但是在重新创建的时候,就会出错...
真的搞不懂,如何才能够安全的杀掉一个线程,让他把资源都释放出来...而且是安全的...
procedure Execute;
end;procedure tpp.Execute;
begin
FreeOnTerminate:=true;//-》线程结束将自动释放
。
。
Terminate;//-》结束线程
end;