|
|
服务定时器事件
Sub OnServiceTimer
...
End Sub
当满足下面三个条件时,将触发 OnServiceTimer 事件:
1. 使用 Service.SetTimer 方法设定了定时器,且 nElapse 不为 -1
2. 进入服务等待,且服务没有被暂停
3. 从上次触发开始已经间隔了 nElapse 设定的毫秒数
下面的例子使用 OnServiceTimer 事件在每天上午 7 点做一次数据同步操作。由于系统原因,SetTimer 不是精确定时器,不能依赖 SetTimer 实现精确时钟,所以需要自行实现时间判断。
Set service = Shell.Service
service.Name = "MySrv"
service.DisplayName = "My Service Application"
NextSynch = DateAdd("h", 7, Date)
If Now > NextSynch Then NextSynch = DateAdd("d", 1, NextSynch)
service.SetTimer 1000
service.DoEvents
'---------------------- Service Event ---------------------
Sub OnServiceTimer
If Now > NextSynch Then
' Do Synch
'......
DateAdd("d", 1, NextSynch)
End If
End Sub
上面的例子中,在初始化的时候先设定下次同步的时间,然后在每次定时器事件中判断当前时间是不是已经超过这个时间,如果超过,则进行同步操作,最后将下次同步时间更新为第二天的 7 点。