我在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
谢谢, 克里斯
答案 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