Вопрос впереди: Я ищу способ запустить обновление пользовательского интерфейса из фонового обслуживания в приложении Blazor Server. Данные в БД поступают из внешнего API и преобразуются/рассчитываются до хранения/обновления. Поскольку это постоянный процесс и агностик пользователя, я реализовал это с помощью фонового обслуживания (впервые с использованием фоновых служб).
Код: Выделить всё
public class DataManagementService(IServiceScopeFactory scopeFactory, IApiService apiService, IEncryptionService encryptionService) : BackgroundService
{
private readonly IApiService _apiService = apiService;
private readonly IEncryptionService _encryptionService = encryptionService;
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
Log.Information("================= DataManagementService Starting =================");
Log.Information("================= Connecting to API =================");
await ConnectToApi();
while (!stoppingToken.IsCancellationRequested)
{
Log.Information("================= Data Update Starting =================");
await UpdateData();
Log.Information("================= Data Update Completed =================");
await Task.Delay(60000, stoppingToken);
}
}
}
FounalService правильно функционирует в отношении обновления данных. Во время некоторых итераций процесса обновления данных может быть информация, которую необходимо обновить в пользовательском интерфейсе. Есть ли способ запустить обновление пользовательского интерфейса из фонового сервиса ? Первоначальная мысль заключалась в том, что я могу использовать события для достижения этого и подписан пользовательский интерфейс на эти события, но я не смог найти какую -либо информацию, которая поддерживает эту теорию. Тем не менее, я ищу более эффективный, реактивный (без задержки между событием обновления и отображением) и, возможно, «правильным» способом.>
Подробнее здесь:
https://stackoverflow.com/questions/794 ... zor-server