Vb.net 测试计时器是否已启动

Vb.net 测试计时器是否已启动,vb.net,timer,Vb.net,Timer,我正在用VB.NET编程,无法解决我遇到的问题 我有一个计时器,在一小时的第n分钟开始,例如站点7在第7分钟开始,站点56在第56分钟开始,站点70在第10分钟开始(模数) 因此,我需要确定服务何时启动,是否可以测试计时器是否应该运行 因此,对于站点45,这将在每小时的第45分钟开始。如果服务在10:55开始,我会在11:45之前测试这个计时器 我的脑袋因为想得太多而麻木了,所以任何帮助都会很好 我只需要一个函数来测试站点计时器是否正在运行,基于偏移小时数。这里是一个参考URL,有人已经问过了,

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

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

因此,我需要确定服务何时启动,是否可以测试计时器是否应该运行

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

我的脑袋因为想得太多而麻木了,所以任何帮助都会很好

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

这里是一个参考URL,有人已经问过了,但短的看起来是;检查:

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

与其摆弄计时器,不停地检查服务是否需要启动,为什么不使用

然而,这里有一个尝试来解决你的问题。您有一个整数(您的服务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
现在您知道计时器必须在什么时候启动,因此服务可以使用(if
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)

为什么不使用Windows任务计划程序?您的问题是否可能重复尚不清楚。你描述了一个逻辑问题,但你的标题和最后一句只是提到你需要检查计时器当前是否正在运行。这和你问题的其余部分有什么关系?我的术语可能不太好。计时器在vb.net应用程序中运行,每10秒触发一次。但是,直到(例如)一小时的第15分钟,它才能开始开火。我有另一个计时器,它检查第一个计时器的状态,并且必须能够从vb应用程序的开始时间计算,以及计时器的计算偏移量,不管第一个计时器是否应该运行。所有这些都是在一个应用程序中完成的