每30秒需要按照系统时钟同步触发一个定时器

3
基于这个 Stack Overflow 的帖子 (https://dev59.com/C3M_5IYBdhLWcg3wjj4p),是否有可能创建一个定时器事件,每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再次触发,以此类推。

我怎么会因为那个问题被踩?我觉得问题很清楚啊? - Riples
我非常清楚,Lajos Arpad肯定也理解得足够好,以便提供一个好的答案。 - xpda
2个回答

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

制作一个定时器并将间隔设置为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

这个计时器如何与系统时钟对齐,以确保在整点后的15秒准确启动? - Riples
@Riples 这就是我的代码在做什么。DateTime.Now.Second 是系统时间,"所以通过我的代码,您可以检查系统时间的秒数,当它为15或45时,if语句将运行代码"。 - Creator
谢谢 - 你的例子给了我我需要的东西。 - Riples

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接