【发布时间】:2014-02-14 14:26:57
【问题描述】:
我想刷新 Treenode.text(带有经过的时间)并使用来自同一线程的计时器。正如我所读到的,它不建议在线程中使用 TTimer*,但是,用什么来代替呢?谢谢。
*我想使用一些时间而不是 sleep()。不仅因为那很俗气(?),而且我必须这样做,否则我只能在每一秒内刷新 treenodetext。)>>
unit master_slave
...
Tsrch_slave_thread = class(TThread)
protected
procedure Execute; override;
public
master: TMaster;
end;
TMaster = class(TObject)
private
...
FMasterNode: TTreeview;
Fsw: TStopWatch;
Fslave_search_thread : Tsrch_slave_thread;
...
end;
...
implementation
...
procedure Tsrch_slave_thread.Execute;
var
searchactive: integer;
begin
while not terminated do begin
searchactive := master.CMD_LISTCNT
if searchactive = 1 then //(master.CMD_LISTCNT's return value = 1, if master finished search on the bus)
exit;
sleep(1000); //dont want to flood the master with UDP packets... (master.CMD_LISTCNT sends UDP packets)
synchronize(procedure begin
with FmasterNode do
text := text + floattostr(Fsw.ElapsedMilliseconds / 1000);
end);
end;
end;
【问题讨论】:
标签: multithreading delphi timing synchronize