Ситуация:
Мне нужно создать какую-то управляющую часть связи через Modbus TCP/IP в моем проекте ASP.NET Core.
Связь с Modbus работает правильно, но мне нужно постоянно считывать некоторые адреса Modbus, и мне нужно установить для них интервал. У меня есть такая структура для этого в db.
Теперь у меня есть singleton с именем CommunicationRepository, который является таким контроллером для этого протокола и имеет методы для чтения из модуля, записи в модуль, структуры для данных из модулей и т. д. и создания CommunicationRunners.
CommunicationRunner - это то, что может подождать, пока истечет интервал, а затем запустить делегата из CommunicationRepository, который затем прочитает конкретный адрес Modbus.
Проблема: теперь это делается асинхронно, что замедляет все остальное — навигацию по странице, ответы от веб-API и т. д. Конечно, эта проблема распознается через небольшие промежутки времени (например, 10 мс).
Как я могу сделать это более стабильным, не глючным? Должен ли я использовать потоки? Если, то как именно?
Буду признателен за примеры кода.
Спасибо и взгляните на изображения.
IServiceScopeFactory
, таким образом все ресурсы освобождаются после завершения инициированного действия). - person Tseng   schedule 09.05.2017ICommandHandler<TCommand>
, которая обрабатывает эту команду, используйте шину сообщений, чтобы распределить ее между многими серверами... способ объяснить все это подробно, поскольку это зависит от каждого случая. - person Tseng   schedule 09.05.2017