请问如何用delphi实现一个定时调用函数的过程(100分)

  • 主题发起人 主题发起人 big_jiang
  • 开始时间 开始时间
B

big_jiang

Unregistered / Unconfirmed
GUEST, unregistred user!
;又要这个调用的函数执行的时间 不确定,所以不能放在timer中,
这里想请问各位大侠,如何实现在delphi中不用timer控件实现定时调用的程序!

在这里想问一下form create 之后,能不能自己做一个一直在循环的程序,
里面放入要执行的函数,自行判断时间,决定是否再执行那个函数.
注意在执行函数中要用到连接数据库和ftp的控件.
 
其实,“做一个一直在循环的程序”是个好方法,但在循环里要用以下这句:
Application.ProcessMessages;
或用一独立线程执行该函数,要不你就不能控制你的程序了,也就是不能做循环以外
的事情。
 
面向对象的编程核心是事件驱动!怎摸能在主线程中用永真循环
form create 后调用一个timer,可根据情况设置ontimer,间隔可以从1ms到几天
ontimer过程 作你想做的事《在执行函数中要用到连接数据库和ftp的控件》
但要注意ontimer过程 刚进入时设置timer.enabled=false,离开时timer.enabled=true
不就可以了!
 
1. 最简单用ttimer
2. 用线程检查系统时间
 
>这个调用的函数执行的时间 不确定,所以不能放在timer中
为何不能放在timer中?
你在timer的事件中自己判断一下时间,是否要调用该函数就是了
 
我对这个函数的用途很有兴趣
 
>>又要这个调用的函数执行的时间 不确定
你应该说明白,到底由于什么事件触发的。
最通用的就是主线程循环,用APPLICAION。PROCESSMESSAGE截获消息队列中的触发消息
一个监视线程负责发送消息。
>>不能放在timer
如果你的事件是由某几个特定的系统时间来触发,当然可以用TIMER。或者动态改变
INTERVAL。
>>注意在执行函数中要用到连接数据库和ftp的控件.
你要执行的函数,不会影响这些控件。
 
;用sleep函数吧,它是个api函数,使用方便,可以在程序的任何地方调用。
 
各位大虾,我觉得big_jiang不是没有理由的
>>动态改变INTERVAL
如果Interval要求大于65535怎么办?
>>使用Timer,在Timer中不断判断
但是Interval设大了,响应就不及时,设小了,跟使用循环不断检查也没有太大区别
有更好的办法吗?
 
interval的值最好固定!不要动态改变!
你可以定义一个double型变量
例如interval值为1000,doubletime:=10; //这样就相当10s
ontimer事件中
timer.enabled:=false; //非常重要!
dec(doubletime)
if doubletime=0 then
begin
doubletime:=10; //再此动态改变doubletime的值
//你想做的事
end;
timer.enabled:=true;
 
; 我后来是采用cactus123456 的方法来做的,请slong把在Application processmessage

中的具体实例详细讲一下把,这样会对大家有所帮助把
 
接受答案了.
 
后退
顶部