关于间隔时间的解决方案(50)

  • 主题发起人 主题发起人 terry_zhou82
  • 开始时间 开始时间
T

terry_zhou82

Unregistered / Unconfirmed
GUEST, unregistred user!
我做的一个提醒程序,用timer控件让他和系统时间一直就执行,但是有个问题,比如说,我想每间隔5分钟,或者10分钟在让他执行一遍,该怎么设计呢?重新弄个TIMER控件使他的INTERVAL为5分钟,10分钟?小弟不才,望大哥们帮忙啊
 
如果你的程序一直在運行,只是每隔5分鐘或是10分鐘提醒一下,就用timer控件;如果你的程序沒有運行,而是每隔5分鐘或是10分鐘運行一下,顯示提醒,那就要用系統的計畫任務了。
 
看来楼上没有理解我的意思。
 
"用timer控件让他和系统时间一直就执行",你的中文表达太HIGH了,别人都看不懂,怎么回答你
 
比如说: Timer1Ontimer()if FormatDateTime('hh:mm:ss',now)=FormatDateTime('hh:mm:ss',DateTimePicker1.time) thenshowmessage('ok');end;timer2.ontimer()//间隔5分钟后在此运行怎么样插入呢?
 
雖然還不是看的太懂,根據感覺再講一下。你放兩個timer控件,timer1的間隔為1秒,timer2的間隔為300秒。timer2的enabled設為false。timer1的ontimer事件用你的代碼,後面再加上timer2.enabled:=true,讓timer2開始。這樣,5分鐘后,timer2的ontimer事件觸發。如果timer2只提醒這一次,就在timer2的ontimer事件中加上timer2.enabled:=false,如果還要繼續提醒,就不用加了。
 
没必要用Timer,自己写个线程,按时触发就行了。在线程的Execute方法中(Tasks就是需要触发的任务,由Interval属性记录间隔):B := GetTickCount;while not Terminated dobegin for I := 0 to High(Tasks) do begin if GetTickCount - Tasks.LastRunTime > Tasks.Interval then begin Tasks.LastRunTime := GetTickCount; Call Task.Run; //异步执行,避免阻塞其他任务的调度 end; end;end;随手写的代码,大概意思就是这样了。
 
用Timer也可以,在OnTimer时间里面可以改下次的执行时间,建议工作不要在OnTimer里面做,可以到时间发送消息,在自定义消息里面处理事件。
 
用线程好了,有时系统忙,避免Timer无反映
 
后退
顶部