
今天在写一个辅助工具时,要用到退出线程,之前用了很多方法,也可以,今天又采了windows的api方法来终止,效果比较好,这里作一个记录
线程中:
TThreadExf = class(TThread)
procedure Execute; override;
end;
var
ThreadExf : TThreadExf;
....
procedure TThreadExf.Execute;
begin
FreeOnTerminate := True;//结束后不需要调用free;
while not Terminated do
begin
...//这里是你处理的事务
Sleep(100);
end;
end;
程序中(结束线程):
TerminateThread(ThreadExf.Handle,0);
while WaitForSingleObject(ThreadExf.Handle,0)<> WAIT_OBJECT_0 do
begin
Application.ProcessMessages;
end;