就是延时几分钟之类的
会导致自己的程序没有响应,不能移动
等延时时间到后才恢复但sleep函数应该不是这样的吧,它不是会释放cpu使用权吗
有人知道这是怎么回事吗?还有什么函数可以做延时用呢(不用Timer)

解决方案 »

  1.   

    Option Explicit
    Private Declare Function GetTickCount Lib "kernel32" () As LongPrivate Sub Command1_Click()
    Dim sTime As LongsTime = GetTickCount()Do
    DoEvents
    Loop Until GetTickCount - sTime > 2000   '延时两秒MsgBox "测试。", vbInformation
    End Sub
      

  2.   

    这样循环用DoEvents等待会导致cpu的占用率为100%
    我说不用timer延时就是因为这个
      

  3.   

    在qbilbo(风之兄) 的基础上修改的,我觉得简单一点。Private Sub Command1_Click()
    Dim sTime
    sTime = Timer
    Do
    DoEvents
    Loop Until Timer - sTime > 5
    MsgBox "   测   试     ", vbInformation
    End Sub
      

  4.   

    那就这样,你显示一个模式的窗体,通过Top,Left属性将这个窗体放在屏幕以外的地方,在这个窗体上放一个TIMER控件,用来关闭这个窗体,这样也可以达到延时的作用。
      

  5.   

    这样循环用DoEvents等待会导致cpu的占用率为100%
    我说不用timer延时就是因为这个----------------------------Do
    DoEvents
    Sleep 0
    Loop Until GetTickCount - sTime > 2000   '延时两秒这样就可以了。
      

  6.   

    用这个方法不占用Cpu资源:
    加一个Timer控件,设Interval为1000 
    Dim sTime
    Private Sub Command2_Click()
    sTime = Timer
    End SubPrivate Sub Timer1_Timer()
    If Timer - sTime > 5 And sTime <> 0 Then 
       MsgBox "   测   试     ", vbInformation
       sTime = 0
       '运行你延时后的程序
    End If
    End Sub
      

  7.   

    看来楼主很在意CPU的资源占用率呀!值得关注!