Tengo un código que crea un token de cancelación
public partial class CardsTabViewModel : BaseViewModel
{
public CancellationTokenSource cts;
public async Task OnAppearing()
{
cts = new CancellationTokenSource(); // << runs as part of OnAppearing()
Código que lo usa:
await GetCards(cts.Token);
public async Task GetCards(CancellationToken ct)
{
while (!ct.IsCancellationRequested)
{
App.viewablePhrases = App.DB.GetViewablePhrases(Settings.Mode, Settings.Pts);
await CheckAvailability();
}
}
y el código que luego cancela este token de cancelación si el usuario se aleja de la pantalla donde se está ejecutando el código anterior:
public void OnDisappearing()
{
cts.Cancel();
Con respecto a la cancelación, ¿es esta la forma correcta de cancelar el token cuando se usa en una Tarea?
En particular revisé esta pregunta:
Uso de la propiedad IsCancellationRequested?
y me hace pensar que no estoy haciendo la cancelación de la manera correcta o tal vez de una manera que pueda causar una excepción.
Además, en este caso, después de haber cancelado, ¿debería hacer un cts.Dispose ()?