我用do while .....DoEvents  .....loop 的方式给程序延时10多秒,每当程序进入延时中时,CPU的占用率总在100%,如何解此问题?请大伙出上主意!谢谢!

解决方案 »

  1.   

    用API函数 sleep:
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Private Sub Command1_Click()
        Sleep 10000   '延时10000毫秒,即10秒
        MsgBox "End of Sleep!"
    End Sub
      

  2.   

    sleep函数是在线程中经常用到得一个函数,看名字就知道意思
      

  3.   

    我知道sleep函数,但是有个问题,如果我用sleep延时10多秒,那么这10多秒里,程序象死了一样,动都动不了啊,那样的话,还不如用自己的方法啊!用sleep如何解决这种假死现像呢?
      

  4.   

    如何解决sleep中,程序的响应问题啊?
      

  5.   

    可惜vb里没有vc的一个函数SwitchToThread,他的效率比sleep要高
    那你试试WaitForSingleObject函数
     Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
      

  6.   

    WaitForSingleObject ?cso,能不能给个例子说明如何用?
      

  7.   

    这样是不是会好一点:
    DO UNTIL .....
    DOEVENTS
    SLEEP 50
    LOOP
    这样程序就不会象死了一样,而CPU也不会占100%了
      

  8.   

    Public Sub yanshi(time As Integer) '延时函数
    Dim Savetime As Double
    Savetime = timeGetTime '记下开始时的时间
    While timeGetTime < Savetime + time '循环等待
    DoEvents '转让控制权,以便让操作系统处理其它的事件。
    Wend
    End Sub
      

  9.   

    Declare Function timeGetTime Lib "winmm.dll" () As Long '得到开机以来的毫秒数
    Public Sub yanshi(time As Integer) '延时函数
    Dim Savetime As Double
    Savetime = timeGetTime '记下开始时的时间
    While timeGetTime < Savetime + time '循环等待
    DoEvents '转让控制权,以便让操作系统处理其它的事件。
    Wend
    End Sub