ASP.NET Core как реализовать сервис, обновляющий данные каждые 3 секунды?

Имеется список подразделений организации. Каждое подразделение имеет уникальное наименование, статус(Активно/Заблокировано). Данные о статусе подразделений отдает сервис А. Статус каждого подразделения должен изменяться каждые 3 секунды. Я пытаюсь реализовать сервис с использованием службы System.Threading.Timer. Проблема в том, что делегат Timer не позволяет возвращать значение(только void), как мне правильно реализовать передачу данных в таком случае?


Ответы (1 шт):

Автор решения: Alexander Petrov

Как я понял, вам нужен постоянно работающий сервис. Или, во всяком случае, долго работающий.

В ASP.NET это реализуется с помощью hosted services.
Background tasks with hosted services in ASP.NET Core. Пример кода как раз использует таймер.


Как я понял, вы хотите посылать сообщения с сервера на клиент. Используйте для этого технологию SignalR.
Благодаря веб-сокетам сервер может сам посылать сообщения. Клиентам нет нужды делать постоянный опрос (polling).

→ Ссылка