需要每隔30秒与系统时钟同步发射定时器

时间:2014-12-06 23:55:03

标签: vb.net timer

基于此SO (https://stackoverflow.com/questions/1329900/net-event-every-minute-on-the-minute-is-a-timer-the-best-option),是否可以创建一个定时器事件,该事件每30秒触发一次,但是根据系统时钟从15秒标记开始?

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

更新

更具体地说,我想启用一个与Windows系统时钟同步的计时器。每15秒,我想运行一些代码,然后每45秒我想再次运行代码。我需要根据系统时间在准确的15秒标记和45秒标记上发射此事件,而不是仅仅从计时器开始的每30秒开始。

所以,如果我在12:30:47启动计时器,我希望计时器在12:31:15再次发射,再在12:31:45发射。依此类推。

2 个答案:

答案 0 :(得分: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非常生疏,所以如果我打错字,请告诉我。

答案 1 :(得分:1)

制作计时器并将间隔设置为1000“1秒” 然后将dim 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