这是一个Client程序,每5s发送一次数据, 发送时我先建一线程,然后在线程中connect和发送
但是任务管理器中显示的线程数一直在增加,请各位老师给与帮助constructor TSendThread.Create();
begin
FtcpClient := TIdTCPClient.Create(nil);
FtcpClient.Host := Config.BlackListIP;
FtcpClient.Port := Config.BlackListPort; PlateImg := TMemoryStream.Create;
VehicleImg := TMemoryStream.Create; inherited Create(True);
end;destructor TSendThread.Destroy;
begin
FtcpClient.Free; PlateImg.Free;
VehicleImg.Free; inherited;
end;procedure TSendThread.Execute;
var
m: TMemoryStream;
begin
FreeOnTerminate := True; try
FtcpClient.Connect; m := TMemoryStream.Create;
try
m.Write(FData, SizeOf(FData));
//发送车辆数据
FtcpClient.WriteStream(m, True, True); if TPackFunction(FData.FunID) = pfNew then
begin
//发送车牌图
FtcpClient.WriteStream(PlateImg, True, True);
FtcpClient.WriteStream(VehicleImg, True, True);
FMsg := '发送黑(白)名单完毕';
end else
FMsg := '重新发送车牌完毕'; FLogType := ltNormal;
Synchronize(ShowMsg);
finally
m.Free;
FtcpClient.Disconnect;
end;
except
on E: Exception do
begin
WriteLog('异常, 原因:' + e.Message);
FMsg := '连接黑(白)名单计算机失败';
FLogType := ltError;
Synchronize(ShowMsg);
end;
end;
end;procedure TSendThread.ShowMsg;
begin
frmMain.ShowLog(FMsg, FLogType);
end;
但是任务管理器中显示的线程数一直在增加,请各位老师给与帮助constructor TSendThread.Create();
begin
FtcpClient := TIdTCPClient.Create(nil);
FtcpClient.Host := Config.BlackListIP;
FtcpClient.Port := Config.BlackListPort; PlateImg := TMemoryStream.Create;
VehicleImg := TMemoryStream.Create; inherited Create(True);
end;destructor TSendThread.Destroy;
begin
FtcpClient.Free; PlateImg.Free;
VehicleImg.Free; inherited;
end;procedure TSendThread.Execute;
var
m: TMemoryStream;
begin
FreeOnTerminate := True; try
FtcpClient.Connect; m := TMemoryStream.Create;
try
m.Write(FData, SizeOf(FData));
//发送车辆数据
FtcpClient.WriteStream(m, True, True); if TPackFunction(FData.FunID) = pfNew then
begin
//发送车牌图
FtcpClient.WriteStream(PlateImg, True, True);
FtcpClient.WriteStream(VehicleImg, True, True);
FMsg := '发送黑(白)名单完毕';
end else
FMsg := '重新发送车牌完毕'; FLogType := ltNormal;
Synchronize(ShowMsg);
finally
m.Free;
FtcpClient.Disconnect;
end;
except
on E: Exception do
begin
WriteLog('异常, 原因:' + e.Message);
FMsg := '连接黑(白)名单计算机失败';
FLogType := ltError;
Synchronize(ShowMsg);
end;
end;
end;procedure TSendThread.ShowMsg;
begin
frmMain.ShowLog(FMsg, FLogType);
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货