页面上有三个按钮,“确定”“暂停/开始”“终止”
点击确定时,触发一个比较耗时的循环,现在想实现点击一下“暂停/开始”按钮就将循环暂停下来,再点击一下,就继续循环,点击终止就直接将循环终止。如果点击确定后,不点击任何其他按钮,则到循环一直做完为止。

解决方案 »

  1.   

    首先创建Form1,放置cmdStart(caption=开始),
    cmdPause(caption=暂停),
    cmdStop(caption=终止)三个按钮,
    textBox控件:Text1(TEXT属性="")Form1中的测试代码如下:(因为是测试,没做错误处理)Option ExplicitPrivate m_lngI  As Long
    Private m_lngX As Double'测试循环--------------------
    Public Function Test() As String
        
        m_lngX = 0
        Do While m_lngX < 1000000
            Do While m_lngI = 1
                m_lngI = m_lngI * 1
                DoEvents
            Loop
            m_lngX = m_lngX + 0.00001
            Text1.Text = m_lngX
            DoEvents
        Loop
    End FunctionPrivate Sub cmdPause_Click()
    Select Case cmdPause.Caption
        Case "暂停"
            cmdPause.Caption = "继续"
            m_lngI = 1
        Case "继续"
            cmdPause.Caption = "暂停"
            m_lngI = 0
    End Select
        
    End SubPrivate Sub cmdStart_Click()
     Test
    End SubPrivate Sub cmdStop_Click()
    m_lngX = 1000001
    End SubPrivate Sub Form_Load()
    m_lngI = 0
    m_lngX = 0
    End SubPrivate Sub Form_Unload(Cancel As Integer)
    End
    End Sub
      

  2.   

    microtry(土炮)在大作中提到:
    m_lngX = 0
        Do While m_lngX < 1000000
            Do While m_lngI = 1
                m_lngI = m_lngI * 1
                DoEvents
            Loop
            m_lngX = m_lngX + 0.00001
            Text1.Text = m_lngX
            DoEvents
        Loop
    请问,为什么要
          Do While m_lngI = 1
                m_lngI = m_lngI * 1
                DoEvents
            Loop
    m_lngI = m_lngI * 1
    有什么作用?
      

  3.   

    测试过了,能暂停。但感觉好像不是从断点继续的。另外,我确实不知道m_lngI = m_lngI * 1
    干什么用。
      

  4.   


    Do While m_lngI = 1
                m_lngI = m_lngI * 1
                DoEvents
            Loop
    不就是想在里面不停的循环,实现暂停的效果吗?所以这句话m_lngI = m_lngI * 1
    完全可以不要,循环一样会做~~~
      

  5.   

    那就这样,比如有10万条数据,top 10处理一次,然后得到top 10000 最后一个id,再处理top 10000 where id>10000的id
    就是分段查询,