01
写在前面
DoEvents 函数返回一个 Integer,它表示独立版本的 Visual Basic(如 Visual Basic Professional Edition)中打开的窗体的数目。DoEvents 将在所有其他应用程序中返回 0。
DoEvents 将控制权交给操作系统。控制权将在操作系统处理完其队列中的事件并发送 SendKeys 队列中的所有项后返回。
02
语法
DoEvents ( )
DoEvents 对于诸如允许用户在过程开始后取消过程(如搜索文件)这样的简单操作最有用。对于长时间运行的过程,将执行控制权交给处理器要比使用计时器或将任务委派给 ActiveX EXE 组件好得多。在后一种情况下,任务可以完全独立于应用程序继续运行,并且操作系统会处理多任务和时间切片。
只要将控制权临时交给事件过程中的处理器,就请确保在第一个调用返回之前,不会从代码的其他部分重新执行过程;这可能会导致出现意外结果。此外,如果其他应用程序可以在您已转交控制权的时间段内以无法预料的方式与过程交互,请不要使用 DoEvents。
03
示例
此示例使用 DoEvents 函数来使得每迭代 1000 次循环就将执行权交给操作系统。DoEvents 返回打开的 Visual Basic 窗体的数目,但此情况仅在主机应用程序为 Visual Basic 时发生。
Dim I, OpenFormsFor I = 1 To 150000 If I Mod 1000 = 0 Then OpenForms = DoEvents End IfNext I