Timer属于系统资源,不是多多益善;OnIdle更不好,程序相当大的时间都空闲,花销太大,还是用线程好。至于实现嘛,重载TThread的Execute方法就行。大致如下:
procedure TThreadTimer.Execute;
begin
repeat
Sleep(IntervalTimer);//交出控制
.... //Do what you want to do.
until Terminaled;
end;
然后在MainForm的OnCreate事件中创建TThreadTimer的实例,OnDestroy中释放就行。