2014-12-06 86 views
2

基於此SO帖子(https://stackoverflow.com/questions/1329900/net-event-every-minute-on-the-minute-is-a-timer-the-best-option)是否有可能創建一個計時器事件,該事件每30秒觸發一次,但根據系統時鐘在15秒開始啓動?需要每隔30秒觸發一次計時器與系統時鐘同步

所以00:15,00:45,01:15,01:45,等

UPDATE

更具體地講,我想啓用同步到Windows中的計時器系統時鐘。每15秒鐘,我想運行一些代碼,然後在每45秒我想再次運行代碼。根據系統時間,我需要這個事件在準確的15秒和45秒時觸發,而不是從計時器開始的每隔30秒開始。

因此,如果我在12:30:47啓動計時器,我希望計時器在12:31:15開始,並在12:31:45再次開始,等等。

+0

我該如何爲此投票?我認爲這個問題很明顯? – Riples 2014-12-07 02:06:49

+0

我很清楚,拉霍斯阿帕德當然明白這足以提供一個很好的答案。 – xpda 2014-12-07 02:40:18

回答

1

製作一個計時器並將間隔設置爲1000「1秒」。
然後將一個昏暗的isec作爲整數。
這將用於檢查系統時間「秒」。

然後做一個if語句並檢查isec是15還是45。

Dim isec As Integer = 0 
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
isec = DateTime.Now.Second 

If isec = 15 Or isec = 45 Then 
'Your code 
End If 

End Sub 
+0

這個定時器如何與系統時鐘對齊,以便在剛剛過去的15秒後啓動? – Riples 2014-12-07 02:17:06

+0

@Riples這就是我的代碼正在做的事情。 DateTime.Now.Second是系統時間「,所以用我的代碼檢查系統時間秒和15或45時,如果統計將運行代碼」 – Creator 2014-12-07 02:56:18

+0

Thankyou - 你的例子給了我正是我需要的。 – Riples 2014-12-12 03:31:49

2

如何:

Dim startin as Integer = 15 - DateTime.Now.Second 
If (startin < 0) Then 
    startin = startin + 50 
End If 
Dim t as System.Threading.Timer = new System.Threading.Timer(AddressOf tick, _ 
    Nothing, startin * 1000, 30000) 

Sub tick(ByVal status As Object) 
Console.WriteLine(Now) ' or MsgBox(Now) 
End Sub 

我的Visual Basic是很生疏的,所以如果我做了錯別字,請讓我知道。

相關問題