【发布时间】:2020-01-12 19:55:02
【问题描述】:
我有一个运行多个计时器的应用程序。
第一个是心跳计时器,HB_Timer,它会在设定的时间间隔内触发一个后台工作程序,该工作程序运行一个 sql 命令来注册一个“心跳”。 第二个是重新初始化计时器,Reinit_Timer,它再次触发后台工作程序以从数据库中查询全局设置,如果心跳间隔的值发生变化,则停止 HB_Timer,相应地更改 HB_Timer.Interval,然后重新启动 HB_Timer。
我已经稍微修改了下面的代码,使其采用最简单的格式。 数据库中的心跳间隔以秒为单位保存,因此在应用间隔之前我乘以 1000 得到毫秒...
Public Function Endpoint_ReInit()
Try
HB_Timer.Stop()
hb_interval = ReadSQLValue(<the data i need to read...>)
If hb_interval > 0 Then HB_Timer.Interval = (hb_interval * 1000)
HB_Timer.Start()
由于某种原因,一旦计时器停止,它就不会以编程方式再次启动,我不明白为什么。 我在计时器的滴答事件和触发后台工作人员时添加了 console.writeline ......两者都在它停止然后重新启动之前工作,然后都没有工作(显然,如果第一个没有,那么第二个肯定不会)。
我想知道它是否会很快,因此尝试在停止和启动之间的一段时间内睡觉,但这没有奏效。
我什至尝试在我的表单上添加一个临时按钮以查看是否可以手动重新启动计时器,但这也不起作用。
我的所有函数等都有错误处理,并且没有抛出异常。
我有点不知所措....谁能帮我指出正确的方向?
【问题讨论】:
标签: vb.net timer backgroundworker