对VB中的DoEvents了解不是很全面,大家讨论讨论DoEvents

解决方案 »

  1.   

    DoEvents是把程序处理的部分提交给操作系统。
      

  2.   

    他是让系统执行一下别的操作。 
    比如: 你在  使用winsock 发送数据后, 应该调用一下doevents 要不然,你接着发送的话, 是上次和这次的一起发的。也就是说, doevents是给后台一个时间, 然后台做其他动作。 
      

  3.   

    如果在一些大循环内使用DoEvents,那么你将会发现,你的程序虽然没死,但是CPU占用率有100%最好的方法,是在使用DoEvents的地方,再加一个Sleep(1)这样既达到了转让控制权的效果,CPU占用也不会很高不过这方法不适合做一些对时间精度高的循环.
      

  4.   

    DoEvents是一种事件处理机制,提交控制权给操作系统,有线程的味道,但不是线程。
      

  5.   

    你们说的我都知道,但我总觉得DoEvents不是很安全,它可能会导致程序流程混乱。使用它可能带来意想不到的问题。不知道各位有没有遇到过类似的问题。
      

  6.   

    我觉得对DoEvents的使用不是件简单的事情,一定要很小心。
      

  7.   

    有没有使用好DoEvents的建议???
      

  8.   

    严重同意
    请看下面的代码:
    Private Sub Command1_Click()
       Static s As Integer, b As Boolean
       b = Not b
    For i = s To 10000
        If Not b Then
            s = i
            MsgBox "i=" & i & "   " & "s=" & s
            Exit For
        End If
        DoEvents
        Text1.Text = i
    Next i
    End Sub
    如果在显示10000之前点击按钮竟然会弹出来2次MSGBOX(看代码应该就显示一次的吧?),很是奇怪,跟踪发现,第一次弹msgbox之后 exit for 到end sub 了,然后竟然下一步是next i,接着继续for ,再次msgbox?严重不符合流程啊,有人说说到底为什么会这样吗???