在退出页面时停止计时器,可以通过使用CancellationTokenSource和OnAfterRenderAsync方法来实现。
@inject NavigationManager NavigationManager
@code { private CancellationTokenSource _timerCancellationToken; }
protected override async Task OnInitializedAsync() { _timerCancellationToken = new CancellationTokenSource();
await base.OnInitializedAsync();
}
protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { var counter = 0; while (true) { if (_timerCancellationToken.Token.IsCancellationRequested) { break; }
counter++;
Console.WriteLine($"Counter: {counter}");
await Task.Delay(1000);
}
}
await base.OnAfterRenderAsync(firstRender);
}
protected override async Task OnAbortAsync() { _timerCancellationToken.Cancel(); await base.OnAbortAsync(); }
这样,当用户离开该页面时,计时器将停止执行。