出了个地址错误,运行不到excute
唉,真没法说你了.在群里问的没完,在这居然也能看到你.看来你真的是问遍了大江南北!
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;
仍然地址错误
if endTime <= 60 then
begin
ThreadgetXML.Resume;// := TThreadgetXML.Create(xmlDoc, lblissue, lblminiteSecond);
end程序里执行是这样写么?
还是没有执行到excute
取不到新值
不关注
关键在于Execute执行体,这里应该有个循环,否则Suspend之后线程就会自动结束了。如下:
procedure TThreadGetXML.Execute;
begin
while not Terminated do
try
...
except
...
end;
end;
楼上有理
Create函数中加上这个:
FreeOnTerminate := False;
在Excute中加
while 1=1 do
begin
//你的代码;
end;
要不没有挂起点,下次从哪执行?
procedure TThreadgetXML.Execute;
fIdHTTP1 := TIDHTTP.Create(nil);<-放到TThreadgetXML.Create中
去掉fIdAntiFreeze1
尽量别用Synchronize,用postmessage消息通知界面或者在主界面用Timer刷新数据。