多个时间点的定时问题,Timer可以做到吗?(50分)

  • 主题发起人 主题发起人 Neo_leaf
  • 开始时间 开始时间
N

Neo_leaf

Unregistered / Unconfirmed
GUEST, unregistred user!
想实现多个时间点的定时问题,
如:想在每天的 8:00、12:00、17:30、23:15这几个时间点触发连接数据库的事件,
不知道如何做,
听说有两种方法:1)、SetTimer/KillTimer;
2)、使用Timer控件;
我只知道2)实现一个时间点可以这样:
procedure TForm1.Timer1Timer(Sender:TObject);
begin
if TimeToStr(Time) = '08:00:00' then
begin
ShowMessage('Timer is run!!!');
end;
end;
但是不知道多个时间点如何做,
而且时间点的个数不固定,
请大家赐教,多谢。
 
最土的办法 设置多个Timer分工
还有就是用Delay然后多线程执行 或者把这几个时间纳入一个时间数组 程序按照数组内容去执行
 
不这些时间写到数组,数据库什么的,再用一个Timer来取时间.
但我自己认为时间点比较多的话,就有必要把Timer的间隔时间设置大一点,再在时间点做点手脚,比如把每个时间点做成一个范围什么的().
 
楼上的方法可行,最好把时间点设置值存贮到数据库或配置文件中,并且用Timer控件定期检查是否到达数据库或配置文件设置的时间,若到达则执行相关操作,我愿来做过一个类似于Windows任务计划的程序就是这样做的...
 
这倒是个办法,
一个Timer可以做到吗,
不知要不要多线程呢,
多线程我不会,
不知难不难?!
 
不用多线程的,单线程就可以实现。另外说一句,多线程不难的:)呵呵
 
就一个定时器。当执行完第一个时间8:00后,再处理下一个时间12:00.
 
procedure TForm1.Timer1Timer(Sender:TObject);
begin
if TimeToStr(Time) = '08:00:00' or timetostr(time)='12:00:00' or timetostr(time)='17:30:00' or timetostr(time)='23:15:00' then
begin
ShowMessage('Timer is run!!!');
end;
end;
 
procedure TForm.Timer1Timer(Sender:TObject);
begin
if 时间 or 时间 or 时间 or 时间 then
begin
end;
end;
//这样不行么?
 
楼上的各位,你们说的都是处理定死的(写入程序的)固定数量的时间处理算法,对于动态加入的随机事件无法处理,所以为了使程序具有良好的通用性,建议还是采用读数据库或配置文件的方式。
 
只要定时不是太过密集和数量太多的话,一个TTIMER就够用了。
 
高手就是高手。
 
不过要注意的是Ttimer在主线程很繁忙时,有时会丢事件。开个线程不停的检查是否到点,最方便。
 
来自:张辉明, 时间:2006-8-10 9:55:34, ID:3530598
不过要注意的是Ttimer在主线程很繁忙时,有时会丢事件。开个线程不停的检查是否到点,最方便。
---------------------
这个如何做,不太明白!?
 
时间跨度这么大,TTimer应该没有问题了
开线程就没有必要了吧,线程多浪费资源啊
 
简单的就是ttimer了.多个点就是多个条件而已. 放在数据库或者配置文件中,用循环实现. 比较灵活, 时间点可以任意添加.不用随时改代码..
高明的办法就是用任务定制的办法.
 
To:duhai_lee,
高明的办法就是用任务定制的办法.
--------------
我想这样做,
在vc论坛上别人也这么说,
但是用delphi不知道如何实现,
可以指点下吗?
多谢,分不够可以加,谢谢大家。。。
 
多人接受答案了。
 
后退
顶部