刚刚学了一点线程的东西,为了在指定的时间间隔之后继续执行,我是这样实现的:
procedure TWatchThread.execute;
var
dt:TDateTime;
begin
try
while(true) do begin
dt:=Now;
if(SecondsBetween(self.dtLoadedTime,dt)<self.nInterval) then continue;//其中self.nInterval为时间间隔的秒数 Synchronize(self.drawQuality); self.dtLoadedTime:=dt; end;
end;如此一来,这个线程对CPU的占用率极高;想到用一个Timer,每隔一定时间间隔让线程执行,又觉得比较麻烦。请问有什么办法在线程内部实现这样一个功能?望各位援手!
procedure TWatchThread.execute;
var
dt:TDateTime;
begin
try
while(true) do begin
dt:=Now;
if(SecondsBetween(self.dtLoadedTime,dt)<self.nInterval) then continue;//其中self.nInterval为时间间隔的秒数 Synchronize(self.drawQuality); self.dtLoadedTime:=dt; end;
end;如此一来,这个线程对CPU的占用率极高;想到用一个Timer,每隔一定时间间隔让线程执行,又觉得比较麻烦。请问有什么办法在线程内部实现这样一个功能?望各位援手!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货