Я построил нечто подобное для тестирования давления в трубопроводе, и я использовал только один таймер для чтения всех наших устройств в тесте.
Я не могу опубликовать класс, потому что он принадлежит моему последнему клиенту, но в основном я устанавливаю таймер для запуска каждые 30 секунд (30000 миллисекунд), поэтому он гарантированно будет работать по крайней мере один раз в минуту с этим кодом:
public int Minute { get; set; }
public bool NewMinute
{
get
{
// initial value
bool newMinute = DateTime.Now.Minute != this.Minute;
// return value
return newMinute;
}
}
Затем в моем событии отметки таймера я делаю check
if (NewMinute)
{
// store so I don't send again till the next minute
Minute = DateTime.Now.Minute;
// Get all temperature values
GetTemperatureValues();
}
В моем методе GetTemperaValues я вызываю некоторые последовательные библиотеки и получаю либо значение обратно, либо, если я не получаю ответ в течение 5 секунд, он выдает ошибку.
Не уверен, дает ли это вам какое-либо руководство, но оно работало там, где я работал, за исключением того, что они покупали самые дешевые устройства, и они выходили из строя слишком часто, но не код.
Теперь это было все сделано в Windows формах, Blazor - другое животное. Вы можете использовать Таймеры в Blazor, как и я, в своем компоненте Sprite для его анимации, и в этот пакет Nuget и пример проекта включен интерфейс подписчика:
https://github.com/DataJuggler/DataJuggler.Blazor.Components
А вот видео, которое идет с ним, если вам скучно: https://youtu.be/frtetHgfdIo