就是在点击某个按钮时,该按钮的操作会进行很长一段时间,所以界面会出现假死的情况,现在我想要的方法是在点击按钮后,我可以进行其它操作,   老大说有个这种方法,但是我不知道是那个方法,有人知道的吗  谢谢了

解决方案 »

  1.   

    在按钮事件的循环代码中加:
    DoEvents
      

  2.   

    for i = 1 to 10000000
        ...
        doevents
    next如果耗时时间很长的地方位于一个函数内,那就没办法了。VB也不支持多线程。
      

  3.   

    一般情况下假死是长循环导致的,你按楼上的,在循环体中加入:DoEvents即可
    该命令是将CPU资源返回给Windows,一边其他任务能及时享有CPU利用权。这样做可以防止程序假死,但也会带来循环运行速度大幅减慢。
      

  4.   


    你看错了吧。你说的是 Sleep() API
    DoEvents没有这个功能。它只是会去调用GetMessage() PeekMessage() 处理消息队列的消息。
      

  5.   


    Public Function MonitorVal() As Boolean
        Dim i As Long
        Do
            GetMotionStatus i
        Loop While i <> 0
       
        MonitorVal = True
    End Function
    我需要检测i是否等于0,可是因为执行是时间很长,所以程序会假死,那么DoEvents应该加在那里呢。MonitorVal函数是模块里面函数。
      

  6.   


    Public Function MonitorVal() As Boolean
        Dim i As Long
        Do
            GetMotionStatus i
            DoEvents
        Loop While i <> 0
       
        MonitorVal = True
    End Function
      

  7.   

    设置一个定时器,把GetMotionStatus i以及判断的IF语句放在定时器事件里.因为你这个循环没有处理别的事情,因此没性能要求,定时器是个好先选择.