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;
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;
...全文
相关推荐
TheadPool 线程池源码 自动管理线程的创建和销毁
封装好的线程池源码,直接可以放到工程中使用,自动管理线程的创建和销毁
Delphi7集成海康SDK实现实时车牌识别:从预览到识别全流程实践
车牌识别是智能安防与出入口场景的核心技术,其工程实现往往涉及图像采集、编码转换、特征提取与模式识别等基础环节。实际开发中,硬件SDK对接、实时预览流畅度、识别引擎整合以及旧系统兼容性,都是影响项目落地的关键难点。本文以Delphi7这一经典开发环境为例,阐述如何通过调用海康HCNetSDK完成相机登录、实时取流与抓帧,并借助独立识别DLL实现动态车牌检测。从技术原理看,结构体对齐、stdcall调用约定、PAnsiChar字符串处理等底层细节,以及YUV转BMP、抽帧识别等优化策略,直接决定了系统的稳定性与
Delphi7创建及释放线程实例
Delphi7创建及释放线程实例,里有我加的中文
delphi7 多线程测试(40个线程)
delphi开启40个线程,各不影响,可暂停,结束,但40个线程都运行完的时间明显比一个线程慢,不知为什么
Delphi使用CreateAnonymousThreadX传递参数的匿名线程
delphi的CreateAnonymousThreadX传递参数的匿名线程


语言基础/算法/系统设计
