vb- DoEvents函数

      DoEvents函数的功能是:转让控制权,以便让操作系统处理其它的事件。
  这种方法经常在一些监测系统中出现。比如,自己修改的进程查看器,还有就是CPU、进程等的监测小软件中。

      1.在需要用某一循环处理相当耗时或者很快速的代码时,就需要用到它,以便用户能在起处理过程中能做其他事情,即程序能被控制,而不是无响应状态
      2.vb6.0中多线程vb代码极度不稳定,而且无法调试,所以vb中的多线程用的很少(注:是指vb的代码在多线程中运行时不稳定)
      3.timer控件可以起到后台运行作用,但其是通过事件控制,一是不稳定,二是速度太慢,如果想用其处理高速又耗系统的代码更本不能达到预期的效果

           Dim L As Long
           
For L = 1 To 999999
                 
'** DoEvents
           Next L 

 

如果无DoEvents,在循环过程中程序无法处理事件,对于用户来说是不响应,无法控制的,如果你有兴趣的话,可以自己试一下。所以DoEvents有时会一些大循环中作测试的时候,是一个不错的选择。

当然,有些人会想,那如果是使用DO的循环方法。没有中断的的限制,那怎么办呢。

所以这点是要注意的,来很多的循环当时,都要有增加一个判断退出的条件,这个条件可以在其它方式下实现,比如说:关闭,最小化,或者简单点就是点击一个中断按钮。这点在开发的过程中,注意一下就不会出现大的问题。

很多的时候,在开发的过程中,要使用Doevents,可是使用的时候,运行速度会变慢,在这个时候,就要使用GetInputState API函数了。它的声明语句为:


 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 
Public Declare Function GetInputState Lib "user32" () As Long
 
例如用: If GetInputState() Then DoEvents '来代替doevents可使循环运行更快
上面讲述的是自己的一些经验小结,只要合理的使用DoEvents,会使开发出来的软件更加完善。

 

posted on 2009-06-24 18:13  炜升  阅读(1015)  评论(0编辑  收藏  举报