Eu tenho um código que cria um token de cancelamento
public partial class CardsTabViewModel : BaseViewModel
{
public CancellationTokenSource cts;
public async Task OnAppearing()
{
cts = new CancellationTokenSource(); // << runs as part of OnAppearing()
Código que o utiliza:
await GetCards(cts.Token);
public async Task GetCards(CancellationToken ct)
{
while (!ct.IsCancellationRequested)
{
App.viewablePhrases = App.DB.GetViewablePhrases(Settings.Mode, Settings.Pts);
await CheckAvailability();
}
}
e código que mais tarde cancela esse token de cancelamento se o usuário se afastar da tela em que o código acima está sendo executado:
public void OnDisappearing()
{
cts.Cancel();
Em relação ao cancelamento, esta é a maneira correta de cancelar o token quando ele está sendo usado em uma tarefa?
Em particular, verifiquei esta pergunta:
Uso da propriedade IsCancellationRequested?
e está me fazendo pensar que não estou cancelando da maneira correta ou talvez de uma maneira que possa causar uma exceção.
Além disso, nesse caso, depois que cancelei, devo fazer um cts.Dispose ()?