2014-09-29 53 views
0

我在VB.Net中編寫了一段代碼,當傳感器改變它的狀態時它將發送一個觸發器來開啓IP攝像機(即0到1或1到0)。在VB.NET中的一段時間內跳過代碼部分

我已經這樣做了,但是我希望當傳感器被觸發時,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

你有沒有看着計時器?

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

您可以創建一個間隔定時器,寫自己的事件處理程序達到該區間,每次觸發。

所以你可以觸發你的相機,設置一個條件跳過任何進一步的電話,然後啓動一個定時器,在30s後逆轉狀態,允許再次觸發相機。

下面是一個基本的例子,每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 
+0

謝謝你的回答。它運作得非常好! – FunkasaurusRex 2014-10-01 05:01:06