关于VB Timer运行的问题

关于timer控件,有个疑问。
举例来说,我把interval设为1,那么timer事件的执行周期是多少?
如果我在timer事件中放入了很多代码,完整地执行一次需要很长时间,比如说是10s,而interval设置为1000(1s)或者更低,那么,timer事件是先执行完我的代码之后再进入下一次timer还是到时间之后(1s)直接执行下一次timer事件?
我在运行程序时,不管机器的cpu有多高,程序一直占用99%的cpu资源,这是不是和timer的interval太小有关?

第一个问题:interval属性的单位是毫秒,设置为1时,执行周期时千分之一秒。
第二个问题:timer事件在本质上是一个过程(sub),而过程的一个特点是,本次执行未完成时,若再执行一个实例,本次实例就会暂停,直到新的实例执行完毕,旧的实例才会继续执行。也就是说,先执行后完成。由于是不同的实例,所以互不干扰,不会出现错误。
正是因为如此,timer过程就相当于一个没有限制条件的递归,很容易就会使CPU占用很高。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-09-28
Private Sub Timer1_Timer()
Timer1.Enabled = False '触发后首先关闭等待
'这里写你的代码
Timer1.Enabled = True '系统运行完成后再打开等待
End Sub
第2个回答  2008-09-28
timer控件的运行原理是:
当系统间隔时间到来时,触发一次timer事件。当事件内的代码执行完毕后,再等待下一间隔时间的到来。。。由此循环下去。
系统间隔时间的设置通过interval来进行,以毫秒为单位,数值越小,则事件的触发频率就越快,反之,数值越大,则事件的触发频率就越慢。如果你把nterval设为1,则事件触发周期为1毫秒,相当快了。
第3个回答  2008-10-09
设置为1就是1毫秒。等待1毫秒。
当执行完你的代码后。等待1S,然后再执行下一次timer。执行完成后,再等待1S执行下一次。就是说,不论你的程序能执行多长时间。你的timer是一个间隔,执行完你的代码后的一个间隔时间。每次执行间隔多少时间。跟你的代码执行时间没关系。
我做的一个倒计时的程序。3个按钮。一个timer控件,3个lb。你把 Timer1.Interval 的值设置大一点就能看出效果
Public n As Integer
Private Sub Command1_Click()
Timer1.Enabled = False
End Sub
Private Sub Command2_Click()
Timer1.Enabled = True
End Sub
Private Sub Command3_Click()
Timer1.Enabled = False
Unload Form1
End Sub
Private Sub Form_Load()
n = 20
Timer1.Interval = 1000
'time.Caption = n
End Sub
Private Sub Timer1_Timer()
time.Caption = n
If n >= 1 Then
n = n - 1
Else
t& = ExitWindowsEx(EWX_LOGOFF, 0)
Timer1.Enabled = False
End If
End Sub

希望能帮到你。
第4个回答  2008-09-30
其实Interval属性值只是一个参考值,其准确性低,因而间隔不一定准确。Timer控件是基于Windows消息WM_TIME的时钟脉冲发生器,系统每秒生成18个时钟信号,所以即使用毫秒衡量Interval属性,间隔的实际精度不会超过1/18秒,换句话说,Timer控件能够精确设置的最短时间是65.6毫秒,如果要使时间间隔更精确,应让定时器检查系统时钟。
第5个回答  2008-10-05
属性的一项就是timer多久执行一次 以毫秒计算1000就是一秒
你设为1的话 就是0.001秒执行一次
例如的设属性是1000
timer里的代码是
label1.caption = date
ens sub
就是隔1秒就变动一次label1.caption
如果timer里代码太多也不会是什魔问题
里面的代码都是同步执行的
也就是说如果timer里有100个对像要执行
属性设为100的话 就是0.1秒执行一次那100个对像
不过电脑性能不好的话 有可能出错或死机是现像