Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4839

Table list doesn't update inside async timer

$
0
0

I'm rather new to Blazor, but not to OO languages

I've got a web service that has a controller that returns requests from a repository

I have a UI service that is independent and calls the web service

I'm trying to update a table periodically with the results of the get from the web service

@page "/"@using System.Timers@using WebServices @inject StatusService WebService // Has a httpClient to call web service@inject IConfiguration Configuration<h4>Status Viewer</h4> <table class="table"><thead><tr><th>Name</th><th>Status</th><th>Last Update</th></tr></thead><tbody>        @if (StatusList != null)        {            @foreach (var status in StatusList)            {<tr><td>@status.Name</td><td>@status.Status</td><td>@status.Timestamp</td>                   </tr>            }        }</tbody></table>@code{    public IEnumerable<Status> 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<string>("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();    }    private async Task UpdateStatus()    {        StatusList = await WebService.GetStatus();        await InvokeAsync(StateHasChanged);    }}

I get a valid value during the init process, but after that, nothing.

I know it is something to do with the rerendering, but I do not know how to trigger it that is different to how I am doing it now

I am using the server side rendering, not sure if I'm trying to do a WASM thing with the server rendering

I've tried the PeriodicTimer, the Threading.Timer and been trying things for about 2 days now and nothing works

I've also attempted to implement IDisposable with the Timer types, but dispose is always called


Viewing all articles
Browse latest Browse all 4839

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>