转让cpu的控制权举个例子 privare sub form_load() dim i as integer dim j as integer For i=0 to i=1000000 j=j+1 next i End sub你运行试一下,并且在运行过程中,试着拖动窗体。然后在上面的程序改为: For i=0 to i=1000000 j=j+1 DoEvents next i End sub 然后,在运行过程中,你再拖动窗体看看。(呵呵,感觉到了变化吧?)解释:在循环线程中CPU会被独占。在此时你进行其他的操作时,会发现明显的不能响应,或延迟。 而加上DoEvents后,即没循环一次,就将cpu转让给别的线程。所以,上面的代码在第2次运行,拖动窗体效果明显不同了。
执行时间比较长的时候用DoEvents,比如循环语句
For i=0 to10000 next i 虽然是一个空循环 但还是有一种死机的感觉 因为程序运行时间内,CPU被这个程序控制 你所作的操作无法被CPU处理For i=0 to10000 DoEvents next i 这样就好多了 Doevents会在循环中将暂时将CPU交给系统 在这段时间内,系统会响应你的操作
privare sub form_load()
dim i as integer
dim j as integer
For i=0 to i=1000000
j=j+1
next i
End sub你运行试一下,并且在运行过程中,试着拖动窗体。然后在上面的程序改为:
For i=0 to i=1000000
j=j+1
DoEvents
next i
End sub
然后,在运行过程中,你再拖动窗体看看。(呵呵,感觉到了变化吧?)解释:在循环线程中CPU会被独占。在此时你进行其他的操作时,会发现明显的不能响应,或延迟。
而加上DoEvents后,即没循环一次,就将cpu转让给别的线程。所以,上面的代码在第2次运行,拖动窗体效果明显不同了。
next i
虽然是一个空循环
但还是有一种死机的感觉
因为程序运行时间内,CPU被这个程序控制
你所作的操作无法被CPU处理For i=0 to10000
DoEvents
next i
这样就好多了
Doevents会在循环中将暂时将CPU交给系统
在这段时间内,系统会响应你的操作
dim i as integer
dim j as integer
For i=0 to i=1000000
j=j+1
next i
End sub为什么我运行这个例子,很正常,没有死机的情况?