"跳过" VB.NET中一段时间​​的代码段

时间:2014-09-29 05:34:22

标签: vb.net

我在VB.Net中编写了一些代码,当传感器改变它的状态(即0到1或1到0)时,它会发送一个触发器来打开IP摄像机。

我已经这样做了,但是我希望当传感器被触发时,IP摄像机将触发然后等待30秒再触发,同时传感器仍然正常触发。我的目标是防止快速触发IP摄像机。

所有这些都是在后台工作人员中完成的。经过一些研究后,我发现我可以让背景工作者停止30秒,但这并不是我想要的,因为传感器也会停止。出于同样的原因,我也不想在那里拖延时间。

我想知道我是否可以"跳过"一段时间内的代码段,在后台工作者中?例如:

    If SensorHasChangedStatus() = True Then

      'execute this bit of code once then skip over it for 30 seconds
      triggerCamera()
      'end of code to skip over

      'do other stuff

   End If

谢谢, 克里斯

1 个答案:

答案 0 :(得分:1)

你看过计时器了吗?

http://msdn.microsoft.com/en-us/library/system.timers.timer%28v=vs.110%29.aspx

您可以使用间隔创建计时器并编写自己的事件处理程序,以便在每次达到间隔时触发。

因此,您可以触发相机,设置条件以跳过任何进一步的呼叫,然后启动计时器以在30秒后反转条件,允许再次触发相机。

这是一个触发每3秒并只写入控制台的基本示例。

Sub Main()

    'Create a timer with interval of 3s
    Dim timer As New Timer(3000)

    'Set handler to trigger each interval
    AddHandler timer.Elapsed, New ElapsedEventHandler(AddressOf elapseHandler)

    'Start timer
    timer.Enabled = True

    'Demo loop
    While timer.Enabled
    End While

End Sub

'Handler
Public Sub elapseHandler(ByVal sender As Object, ByVal e As ElapsedEventArgs)
    Console.WriteLine("3s Passed")
    'Do stuff here every interval
End Sub