今天试验使用sleep()函数实现停顿,通过几次运行都产生程序死掉的效果,就重新建立一个简单的工程,单独试验sleep()函数的效果,在form中只加入最简化的一个label和一个button,在代码窗口加入如下代码:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Private Sub Command1_Click()
For i = 1 To 10
    Label1.Caption = "当前是第" + Str(i) + "次循环"
    Call Sleep(1000)
Next i
End Sub
运行发现当i从1取到100时出现程序无反应的现象,很长时间后label1显示出“当前是第100次循环”于是将循环次数减少到现在的10次,则运行时在十秒钟后显示出“当前是第10次循环”,也就是说,每次循环之间的一秒钟停顿实现了,可是在停顿之前对label1的文本的更改并没有显示出效果。具体这个问题的情况写在我的blog中,望各位大虾不吝赐教,在此先行谢过了……
blog地址:http://soulsolo.blog.sohu.com/39849531.html

解决方案 »

  1.   

    Private Sub Command1_Click()
        For i = 1 To 10
            Label1.Caption = "当前是第" + Str(i) + "次循环"
            'Me.Refresh
            DoEvents
            Call Sleep(1000)
        Next i
    End Sub
      

  2.   

    Private Sub Command1_Click()
        For i = 1 To 10
            Label1.Caption = "当前是第" + Str(i) + "次循环"
            'Me.Refresh
            DoEvents
            Call Sleep(1000)
            DoEvents
        Next i
    End Sub
      

  3.   

    For i = 1 To 10
        Label1.Caption = "当前是第" + Str(i) + "次循环"
        '用下面三个中任意一个即可
        Label1.Refresh
        'DoEvents
        'Me.Refresh
        Call Sleep(1000)
    Next i