@rendermode InteractiveServer @page "/clock" @inject TimeApiClient TimeApi @implements IAsyncDisposable Clock

DB Server Clock

@if (_dbTime.HasValue) { @_dbTime.Value.ToString("HH:mm:ss") @_dbTime.Value.ToString("dd.MM.yyyy") } else if (_error != null) { --:--:-- @_error } else { ... }
@code { private DateTime? _dbTime; private string? _error; private Timer? _timer; protected override async Task OnInitializedAsync() { await TickAsync(); _timer = new Timer(async _ => { await TickAsync(); await InvokeAsync(StateHasChanged); }, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1)); } private async Task TickAsync() { try { _dbTime = await TimeApi.InsertAndGetLastAsync(); _error = null; } catch (Exception ex) { _error = ex.Message; } } public async ValueTask DisposeAsync() { if (_timer != null) await _timer.DisposeAsync(); } }