У меня есть приложение, которое запускает несколько таймеров.
Первый - это таймер сердцебиения, HB_Timer, который запускает фонового работника с заданным интервалом, который запускает команду sql, чтобы зарегистрировать «сердцебиение». Второй - таймер повторного запуска, Reinit_Timer, который снова запускает фонового работника для запроса глобальных настроек из базы данных и, если значение для интервала пульса изменилось, останавливает HB_Timer, соответственно изменяет HB_Timer.Interval и затем перезапускает HB_Timer.
Я немного изменил приведенный ниже код, чтобы перевести его в самый простой формат c. Интервал сердцебиения в БД сохраняется в секундах, поэтому я умножаю его на 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 в событие tick таймера и при запуске фонового работника ... оба работают до его остановки, а затем перезапускаются, а затем не работают (очевидно, если первое не работает, то второе определенно не будет).
Я задавался вопросом, будет ли это быстро, поэтому пытался спать в течение периодов между остановкой и запуском, но это не сработало.
Я даже попытался добавить временную кнопку в мою форму, чтобы посмотреть, можно ли перезапустить таймер вручную, и это тоже не работает.
У меня есть обработка ошибок во всех моих функциях et c и никаких исключений не выбрасывается.
Я немного растерялся ... Может кто-нибудь помочь мне направить меня в правильном направлении?