基于此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发射。依此类推。
答案 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