停止Sub从另一个事件运行而不检查布尔值

时间:2013-09-19 13:50:13

标签: vb.net visual-studio-2010 vb.net-2010

我有这个代码来控制我正在建设的设备。我的主要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

显然这并不存在,关于如何做到的任何想法?现在,如果我在程序中发现问题,我必须中止调试,但这不会在开发之外工作。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您在另一个步骤中调用AutoStart(),则可以取消该线程。

布尔标志是最好/最简单的方法,但线程是一个选项。