![]() |
服务定时器事件
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 点。