我有这个代码来控制我正在建设的设备。我的主要Sub向硬件发送了几个命令,总是等待必要的时间来执行操作。该算法类似于:
Private Sub StartAuto()
Send command1 to hardware and wait x seconds
Send command2 to hardware and wait y seconds
Send command3 to hardware and wait z seconds
etc
End Sub
问题是,我希望能够通过停止按钮停止执行此例程。到目前为止,我无法想到或找到比检查每个命令之间的布尔值更好的方法,这将是非常糟糕的:
Private Sub btStopAuto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btStopAuto.Click
keepRunning = false
End Sub
Private Sub StartAuto()
keepRunning = True
Send command1 to hardware and wait x seconds
If (keepRunning = false)
Exit Sub
End If
Send command2 to hardware and wait y seconds
If (keepRunning = false)
Exit Sub
End If
Send command3 to hardware and wait z seconds
If (keepRunning = false)
Exit Sub
End If
etc
End Sub
我考虑过使用While
循环,但它们只会在整个过程完成后验证。
Essentialy我需要的是像
Private Sub btStopAuto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btStopAuto.Click
StartAuto.Exit
End Sub
显然这并不存在,关于如何做到的任何想法?现在,如果我在程序中发现问题,我必须中止调试,但这不会在开发之外工作。
谢谢。
答案 0 :(得分:0)
如果您在另一个步骤中调用AutoStart(),则可以取消该线程。
布尔标志是最好/最简单的方法,但线程是一个选项。