我正在中继上运行测试,我想添加一个暂停按钮或热键只是为了暂时停止测试,但是在循环过程中,您无法与表单进行交互。
这用于在继电器上运行测试
.borderBottom
只希望能够在循环中的任何时刻暂停和取消暂停
border-bottom
为什么此计时器不起作用?
答案 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)
您可以在这里做几件事。
您可以添加一个消息框来停止代码,直到在消息框上单击“确定”为止。代码示例如下:
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
您可以使用编译器中断。在Visual Studio中,您可以通过单击行号旁边的区域来添加红色圆圈来执行此操作,这还将暂停代码。
使用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