如何暂停表单中的while循环

时间:2019-06-27 20:07:10

标签: vb.net

我正在中继上运行测试,我想添加一个暂停按钮或热键只是为了暂时停止测试,但是在循环过程中,您无法与表单进行交互。

这用于在继电器上运行测试

.borderBottom

只希望能够在循环中的任何时刻暂停和取消暂停

border-bottom

为什么此计时器不起作用?

2 个答案:

答案 0 :(得分:1)

我将使用计时器,并在计时器滴答声中执行操作,而不是循环执行。

Private ReadOnly _timer As Timer = New Timer With {
    .Interval = someMilliseconds
}
Private _on As Boolean = False 

其他地方

_timer.Start()

Public Sub Timer_Tick(ByVal sender As Object, ByVal e As EventArgs)
    _timer.Stop()
    If _on Then
        'Do "ON" things
        _timer.Interval = onInterval
    Else
        'Do "OFF" things
        _timer.Interval = offInterval
    End If
    _on = Not _on
    _timer.Start();
End Sub

您随时可以使用_timer.Stop()停止计时器或使用_timer.Start()重新启动计时器。

此外,.NET Framework在不同的名称空间中具有不同的计时器。在这种情况下,我不知道哪一个最好。如@Cheddar所述,根据所使用的硬件和操作系统,计时器可能无法按预期工作。

答案 1 :(得分:0)

您可以在这里做几件事。

  1. 您可以添加一个消息框来停止代码,直到在消息框上单击“确定”为止。代码示例如下:

    msgbox(“暂停”)

    Private Sub loopaction()
    While numcount <= targetloop
        lblposatm.Text = numcount
        lblposatm.Refresh()
        TurnOn()
        Threading.Thread.Sleep(timeon)
        msgbox("Pause") 'Notice the added box
        turnoff()
        Threading.Thread.Sleep(timeoff)
        numcount = numcount + 1
    End While
    BTNloop.Text = "Complete"
    BTNloop.Refresh()
    End Sub
    
  2. 您可以使用编译器中断。在Visual Studio中,您可以通过单击行号旁边的区域来添加红色圆圈来执行此操作,这还将暂停代码。

  3. 使用Enter键暂停程序。

    Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
    
    If e.KeyCode = Keys.Enter Then
        MsgBox("Pause")
    End If
    
    End Sub