constructor TThreadgetXML.Create(XMLDoc: TXMLDocument; lblIssue, lblMiniteSecond: TLabel);
begin
flblIssue := lblIssue;
flblMiniteSecond := lblMiniteSecond;
fXMLDoc := XMLDoc;
inherited Create(True);
end;procedure TThreadgetXML.Execute;
begin
try
fIdAntiFreeze1 := TIdAntiFreeze.Create(nil);
fIdHTTP1 := TIDHTTP.Create(nil);
fIdAntiFreeze1.OnlyWhenIdle := False; fXMLDoc.XML.Text :=
fIdHTTP1.Get('http://219.142.177.16:8381/ripado/sale.xml');
fXMLDoc.Active := true;
flblIssue.Caption := GetIssue;
fEndTime := strToInt(GetEndTime);
Synchronize(SynChangeTime); if assigned(fIdAntiFreeze1) then
freeAndNil(fIdAntiFreeze1);
if assigned(fXMLDoc) then
freeAndNil(fXMLDoc);
if assigned(fIdHTTP1) then
freeAndNil(fIdHTTP1);
Suspend;
except
strMsg := '网络连接错误!';
Synchronize(SynAddInfo);
endend;
显示窗体时我已经创建计时器中调用
if endTime <= 60 then
begin
// if not assigned(ThreadgetXML) then
// ThreadgetXML := TThreadgetXML.Create(xmlDoc, lblissue, lblminiteSecond);
ThreadgetXML.Resume;
end
else
if not tmrCountDown.Enabled then tmrCountDown.Enabled := true;第二次调用就出错了,excute代码上的部分说什么也不会被执行,请大大们帮我!
begin
flblIssue := lblIssue;
flblMiniteSecond := lblMiniteSecond;
fXMLDoc := XMLDoc;
inherited Create(True);
end;procedure TThreadgetXML.Execute;
begin
try
fIdAntiFreeze1 := TIdAntiFreeze.Create(nil);
fIdHTTP1 := TIDHTTP.Create(nil);
fIdAntiFreeze1.OnlyWhenIdle := False; fXMLDoc.XML.Text :=
fIdHTTP1.Get('http://219.142.177.16:8381/ripado/sale.xml');
fXMLDoc.Active := true;
flblIssue.Caption := GetIssue;
fEndTime := strToInt(GetEndTime);
Synchronize(SynChangeTime); if assigned(fIdAntiFreeze1) then
freeAndNil(fIdAntiFreeze1);
if assigned(fXMLDoc) then
freeAndNil(fXMLDoc);
if assigned(fIdHTTP1) then
freeAndNil(fIdHTTP1);
Suspend;
except
strMsg := '网络连接错误!';
Synchronize(SynAddInfo);
endend;
显示窗体时我已经创建计时器中调用
if endTime <= 60 then
begin
// if not assigned(ThreadgetXML) then
// ThreadgetXML := TThreadgetXML.Create(xmlDoc, lblissue, lblminiteSecond);
ThreadgetXML.Resume;
end
else
if not tmrCountDown.Enabled then tmrCountDown.Enabled := true;第二次调用就出错了,excute代码上的部分说什么也不会被执行,请大大们帮我!
解决方案 »
- C#翻译delphi问题,急..
- 关于DBGrid的问题!
- 我的分用完了,不过还是请大家帮我看看这个小问题,另外请斑竹送我一点分啊
- 如何把(SQL Server数据库)表一中某字段的值设置成参考表二中相应字段的值呢?
- 访问ACCESS数据库问题
- Delphi中Webservice的调用
- 用代码控制rave reports
- 谁有delphi 6.0 update pack 2 Enterprise edition的serial number and key
- 再问个COM问题
- 这个问题很难取舍的
- 我想问一下,SOCKET发送信息除了发送TEXT格式外,还有一种把数据封包发送的方法,
- 请问,那位高人知道如何用delphi获取任意文件的‘修订号’属性?
inherited Create(True);这个是把线程挂起了.
要想线程序马上执行需要 inherited Create(false);
不过,你的代码有问题:
应该写成
constructor TThreadgetXML.Create(XMLDoc: TXMLDocument; lblIssue, lblMiniteSecond: TLabel);
begin
inherited Create(True);
flblIssue := lblIssue;
flblMiniteSecond := lblMiniteSecond;
fXMLDoc := XMLDoc;
resume;
end;
begin
ThreadgetXML.Resume;// := TThreadgetXML.Create(xmlDoc, lblissue, lblminiteSecond);
end程序里执行是这样写么?还是没有执行到excute
begin
while not Terminated do
try
...
except
...
end;
end;
while 1=1 do
begin//你的代码;
end;
去掉fIdAntiFreeze1
尽量别用Synchronize,用postmessage消息通知界面或者在主界面用Timer刷新数据。