procedure Twork.Execute;
begin
FreeOnTerminate:=true;
while not Terminated do
begin
Sleep(1);
end;
end;
主线程停止,问题来了,这种方式线程无法释放.
FTwork:=Twork.Create(False);
FTwork.Terminate;
...全文
11412打赏收藏
关于多线程停止释放问题
子线程,空转不加任何东西 procedure Twork.Execute; begin FreeOnTerminate:=true; while not Terminated do begin Sleep(1); end; end; 主线程停止,问题来了,这种方式线程无法释放. FTwork:=Twork.Create(False); FTwork.Terminate;
procedure Twork.Execute;
begin
FreeOnTerminate:=true;
while not Terminated do
begin
Sleep(1);
end;
end;
这个代码就不应该这样写吧:
procedure Twork.Execute;
begin
//这一行不应该出现这里FreeOnTerminate:=true;
while true do
begin
Sleep(1);
end;
end;
调用:
var Work:TWork;
....
begin
Work:TWork.Create(False);
Work.FreeOnTerminate:=True;
Work.Resume;
end;
释放:
Work.Terminate;//DELPHI会自动释放线程资源,自动FREE