【VBA系统教程十七】 关于定时器使用是的注意点
时 间:2013-10-21 08:10:08
作 者:nivenm ID:29828 城市:无锡
摘 要:定时器,VBA
正 文:
【VBA系统教程十七】 关于定时器使用是的注意点
VB编程过程中,通过引发Timer事件,Timer控件可以有规律地间隔一段时间执行一次代码。Interval属性是Timer控件最重要的一个属性,它以千分之一秒为单位指定Timer事件之间的间隔,理论上可以认为最少可设置为1毫秒触发一次Timer事件,另外一个重要属性是Enabled属性,它决定计时器是否开始工作。因为Timer控件响应时间的流逝,独立于用户,可以成为编程者的“好帮手”,所以在实践中很受欢迎,但编程者特别是初学者在实际使用过程中往往会感觉到“力不从心”,下面笔者将通过分析并结合自己的编程体会谈谈Timer控件使用中的几个误区。
1. 编程中过于相信Interval属性值的准确性
这是初学者易犯的错误,其实Interval属性值只是一个参考值,其准确性低,因而间隔不一定准确。Timer控件是基于Windows消息 WM_TIME的时钟脉冲发生器,系统每秒生成18个时钟信号,所以即使用毫秒衡量Interval属性,间隔的实际精度不会超过1/18秒,换句话说,Timer控件能够精确设置的最短时间是65.6毫秒,如果要使时间间隔更精确,应让定时器检查系统时钟。
2. Interval属性的取值范围
Interval属性的有效值在0至65535之间,这就意味着即使最长时间间隔也只是65.6秒,比一分钟长不了多少,而且VB只有在Interval 属性值大于0时,才会产生Timer事件,这是要特别注意的地方。
3. Timer控件的功能定位出错
Timer事件是周期性的,Interval属性主要是决定“多少次”而非“多久”,所以一般不用于计时,而是用做计数。笔者曾做过实验,把 Interval值分别设为1000和60000,即把间隔时间分别设为一秒钟和一分钟,做成一个计时器,并把工作结果和系统标准时间比较,误差分别是 6.7%和1.7%,可见定时器事件生成越频繁,响应事件所用的处理越多,越将降低系统综合性能,从而导致误差增大,这么大的误差显然失去了用做计时的意义。
4. 计数器变量的声明错误
在设计计数器时最易犯的错误是不声明变量或在区域变量中声明。将Interval属性设为1000,看看下面这个程序:
Private Sub Timer1_timer()
Dim i as integer
i=i+1
print i
End Sub
也许有读者可能想通过这段程序,能打印出1,2……n,而事实上只能打印出1,1……1来,原因在于每个时间间隔内,按顺序运行的Timer事件是彼此互不相干的,如将变量i声明为区域变量,每次程序一运行完,此变量即告完成任务,因此显示的永远是1,如在程序中将i声明为公用变量,此变量存储的值就会一直保留下来。
以上几点只是笔者在当前系统环境下的粗浅认识,可以想见,随着硬件和软件环境的不断改善,将会出现更加精确的Timer控件
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- 【Access IIF函数嵌套示例...(11.26)
- Access快速开发平台--使用组...(11.25)
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)