Список таблиц не обновляется внутри асинхронного таймераC#

Место общения программистов C#
Ответить
Anonymous
 Список таблиц не обновляется внутри асинхронного таймера

Сообщение Anonymous »

Я новичок в Blazor, но не в объектно-ориентированных языках.
У меня есть веб-сервис с контроллером, который возвращает запросы из репозитория.
У меня есть независимая служба пользовательского интерфейса, которая вызывает веб-службу.
Я пытаюсь периодически обновлять таблицу с результатами, полученными от веб-службы. р>

Код: Выделить всё

@page "/"

@using System.Timers
@using WebServices

@inject StatusService WebService // Has a httpClient to call web service
@inject IConfiguration Configuration

[h4]Status Viewer[/h4]




Name
Status
Last Update




@if (StatusList != null)
{
@foreach (var status in StatusList)
{

@status.Name
@status.Status
@status.Timestamp

}
}



@code
{
public IEnumerable StatusList { get; set; }

private int UIReloadTime;
private const int MINUTE_IN_MILLISECONDS = 60000;
private System.Timers.Timer Timer { get; set; }

protected override async Task OnInitializedAsync()
{
UIReloadTime = int.Parse(Configuration.GetValue("ui:ReloadTime"));
await UpdateStatus();

Timer = new System.Timers.Timer();
Timer.Interval = (UIReloadTime * MINUTE_IN_MILLISECONDS);
Timer.Elapsed += OnElapsed;
Timer.Enabled = true;
Timer.Start();
}

private async void OnElapsed(object? sender, ElapsedEventArgs e)
{
await UpdateStatus();
await InvokeAsync(StateHasChanged);
}

private async Task UpdateStatus()
{
StatusList = await WebService.GetStatus();
}
}
Я получаю допустимое значение во время процесса инициализации, но после этого ничего.
Я знаю, что это как-то связано с повторной отрисовкой, но Я не знаю, как его запустить, это отличается от того, как я это делаю сейчас.
Я использую рендеринг на стороне сервера, не уверен, пытаюсь ли я сделать что-то WASM с помощью серверный рендеринг
Я пробовал PeriodicTimer, Threading.Timer и пробовал что-то уже около 2 дней, и ничего не работает
Я' Я также пытался реализовать IDisposable с типами Timer, но Dispose всегда вызывается.
EDIT: с тех пор я также пытался создать новое приложение WASM и передавать данные между попытками. Это все еще не работает. Я официально в тупике

Подробнее здесь: https://stackoverflow.com/questions/787 ... sync-timer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»