@page "/State" @implements IDisposable <h3>State</h3> <p>@output</p> @code { private string output = ""; private CancellationTokenSource cts = new(); protected override async Task OnInitializedAsync() { while (!cts.IsCancellationRequested) { await Task.Delay(1000); var rnd = new Random(); output = rnd.Next(1, 50).ToString(); StateHasChanged(); } // cts.Token.ThrowIfCancellationRequested(); } public void Dispose() { cts.Cancel(); cts.Dispose(); } }
References
https://docs.microsoft.com/en-us/aspnet/core/blazor/components/lifecycle?view=aspnetcore-6.0#cancelable-background-work
https://www.syncfusion.com/faq/blazor/web-api/how-do-i-cancel-background-long-running-tasks-when-a-user-navigates-to-another-page-in-blazor