delphi 不断创建线程,销毁线程,程序占用线程却不断增加,有没有朋友遇到并解决问题?
之前在一个复杂的软件发现这个问题,后来专门编写了一个非常简单的例子,这个问题却存在,不知道如何解决。我用fastmm进行内存泄漏检查 ,没有发现可疑的内存泄漏,不知道有没有朋友知道如何解决这个问题?我的代码很简单
1,创建一个TThread对象,这个线程经过短暂的延时后退出,代码如下
constructor TTcpCmdThread.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
end;
destructor TTcpCmdThread.Destroy;
begin
inherited;
end;
procedure TTcpCmdThread.Execute;
var
i:Integer;
begin
{ Place thread code here }
//self.FreeOnTerminate := True;
i:=0;
while(True)do
begin
Inc(i);sleep(1);
if i > 20 then Break;
end;
end;
2、主窗口用一个定时器定时创建新的线程,并在线程结束后销毁;
procedure TForm1.playcmd;
begin
FTcpCmdThread:=TTcpCmdThread.Create(true);
FTcpCmdThread.Resume;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
ret:Integer;
begin
if(fstatus = 0)then
begin
if(ftcpcmdthread = nil)then
begin
playcmd();
fstatus := 1;
end;
end
else if fstatus = 1 then
begin
ftcpcmdthread.WaitFor;
ftcpcmdthread.Free;
ftcpcmdthread:=nil;
fstatus:=0;
Inc(fcount);
label1.Caption := IntToStr(fcount);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
fstatus := 0;
fcount := 0;
end;