線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1220
推到 Plurk!
推到 Facebook!

我在delphi6 + indy8的环境下写的程序为什么在任务管理器中显示的线程数一直在增加??

尚未結案
sdshw
一般會員


發表:8
回覆:11
積分:3
註冊:2008-03-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-03-24 15:40:37 IP:60.216.xxx.xxx 訂閱
这是一个Client程序,每5s发送一次数据, 发送时我先建一线程,然后在线程中connect和发送
但是任务管理器中显示的线程数一直在增加,请各位老师给与帮助

[code delphi]
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;



[/code]



jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-03-26 09:40:17 IP:210.66.xxx.xxx 訂閱
我在猜想, 累計的Thread Count 有沒有可能是
TIdTCPServer 元件中 Thread pool 的作用所致?!


malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-03-27 01:52:36 IP:61.219.xxx.xxx 訂閱
是不是你的 Thread 根本還沒結束.. 所以才會累計下去
系統時間:2024-04-24 3:46:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!