测试计时器是否已启动

时间:2018-01-16 15:13:58

标签: vb.net timer

我在VB.NET中编程,无法解决我遇到的问题。

我有一个计时器从一小时的第n分钟开始,例如站点号7从第7分钟开始,站点号56从第56分钟开始,站点号70从第10分钟开始(模数)。

所以我需要确定我的服务何时开始,我是否可以测试计时器是否应该运行。

因此,对于网站45,这将在每小时的第45分钟开始。如果服务在10:55开始,我不会在11:45之前测试这个计时器

我的头脑因为试图过多考虑而麻木,所以任何帮助都会很棒。

我只需要一个函数来测试站点计时器是否正在运行,基于偏移小时。

2 个答案:

答案 0 :(得分:1)

这是有人已经问过的参考网址HERE,但看起来很短;检查:

If timer.enabled = true Then
'''Do stuff etc...
End If

答案 1 :(得分:1)

为什么不使用Windows Task Scheduler

而不是随便摆弄计时器并不断检查您的服务是否需要启动?

但是,这是尝试解决您的问题。您有一个整数(您的服务ID),并且您想根据业务规则检查何时需要启动:

Public Function WhenTimerHasToStart(serviceId As Int32) As Date
    Dim minuteRemainder = serviceId Mod 60
    Dim now = Date.Now
    Dim dt = New Date(now.Year, now.Month, now.Day, now.Hour, minuteRemainder, now.Second)

    If dt >= now Then
        Return dt
    Else
        Return dt.AddHours(1)
    End If
End Function

现在您知道计时器何时必须启动,因此服务可以使用timer.Change(如果Threading.Timer)使用正确的参数。例如:

Dim serviceId = 70
Dim timerStart = WhenTimerHasToStart(serviceId) ' 1/16/2018 05:10:17 PM    
Dim offsetMillis As int32 = CInt((timerStart - Date.Now).TotalMilliseconds)
timer.Change(offsetMillis, Threading.Timeout.Infinite)