DoEvents 函数   
转让控制权,以便让操作系统处理其它的事件。
语法
DoEvents( )
说明
DoEvents 函数会返回一个 Integer,以代表 Visual Basic 独立版本中打开的窗体数目,例如,Visual Basic,专业版,在其它的应用程序中,DoEvents 返回 0。DoEvents 会将控制权传给操作系统。当操作系统处理完队列中的事件,并且在 SendKeys 队列中的所有键也都已送出之后,返回控制权。DoEvents 对于简化诸如允许用户取消一个已启动的过程 — 例如搜寻一个文件 — 特别有用。对于长时间过程,放弃控制权最好使用定时器或通过委派任务给 ActiveX EXE 部件来完成。以后,任务还是完全独立于应用程序,多任务及时间片由操作系统来处理。小心 确保以 DoEvents 放弃控制权的过程,在第一次 DoEvents 返回之前,不能再次被其他部分的代码调用;否则会产生不可预料的结果。此外,如果其它的应用程序可能会和本过程以不可预知的方式进行交互操作,那么也不要使用 DoEvents,因为此时不能放弃控制权。

解决方案 »

  1.   

    Thanks.
    能否联系实例说明?
      

  2.   

        比方说你有一个循环,这个循环执行的时候,系统不会再相应别的事件,一直到这个循环完了为止.而你在此过程中想让循环相应别的事件,就可以再循环中加入一个DoEvents就可以了.
         不知道我说的你能不能明白.
      

  3.   

    DoEvents 函数示例
    下列示例在循环中使用 DoEvents 函数,每当循环完成 1000 次时,将执行让给操作系统。DoEvents 返回仅当主应用程序是 Visual Basic时,打开的窗体个数。' 创建一个变量来保存加载的 Visual Basic 可见窗体的个数。
    Dim I, OpenForms
    For I = 1 To 150000   ' 循环开始。
       If I Mod 1000 = 0 Then    ' 如果循环一已完成了 1000 次。
          OpenForms = DoEvents   ' 将执行让给操作系统。
       End If
    Next I   ' 将循环计数器加一。
      

  4.   

    Keri老兄:
         你的意思是否是类似于实现程序的多线程?
      

  5.   

    在有后台执行的指令后,加上DoEvents能够使后面的语句不被执行,同时释放控制权,直到后台操作结束.象拷贝大文件,发送串口命令时就应该加上它的.注意的是,在执行时不可以再进行这个操作了.否则...
      

  6.   

    举个简单的例子,如果你的程序在进行一个复杂的操作,要好长时间,这时如果用户打开另外一个窗口,然后再回到你的程序窗口时,你的窗口会变成白白的一片,窗口上的内容都看不到了。这种情况下你在适当的地方加上doevents,就能使切换回来的窗口不久变回
    你窗口本来的模样