DoEvents语句的用法,最好用通俗的语句解释,别像MSDN中的一样难懂

解决方案 »

  1.   

    转让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次运行,拖动窗体效果明显不同了。
      

  2.   

    执行时间比较长的时候用DoEvents,比如循环语句
      

  3.   

    For i=0 to10000
    next i
    虽然是一个空循环
    但还是有一种死机的感觉
    因为程序运行时间内,CPU被这个程序控制
    你所作的操作无法被CPU处理For i=0 to10000
     DoEvents
    next i
    这样就好多了
    Doevents会在循环中将暂时将CPU交给系统
    在这段时间内,系统会响应你的操作
      

  4.   

    把控制权交给系统,这句话怎么理解呢?举个例子假如说你要操作一个工作量很大的事件,但此时又不想让用户等待他完成,而且可以进行其它操作,此时DoEvent就能解决这个问题
      

  5.   

    DoEvents的本质是:去处理自身线程的积压消息
      

  6.   

    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为什么我运行这个例子,很正常,没有死机的情况?