Mam kod, który tworzy token anulowania
public partial class CardsTabViewModel : BaseViewModel
{
public CancellationTokenSource cts;
public async Task OnAppearing()
{
cts = new CancellationTokenSource(); // << runs as part of OnAppearing()
Kod, który go używa:
await GetCards(cts.Token);
public async Task GetCards(CancellationToken ct)
{
while (!ct.IsCancellationRequested)
{
App.viewablePhrases = App.DB.GetViewablePhrases(Settings.Mode, Settings.Pts);
await CheckAvailability();
}
}
i kod, który później anuluje ten Token Anulowania, jeśli użytkownik odejdzie od ekranu, na którym działa powyższy kod:
public void OnDisappearing()
{
cts.Cancel();
Jeśli chodzi o anulowanie, czy jest to właściwy sposób anulowania tokena, gdy jest on używany w zadaniu?
W szczególności sprawdziłem to pytanie:
Użycie właściwości IsCancellationRequested?
i sprawia, że myślę, że nie robię anulowania we właściwy sposób, a może w sposób, który może powodować wyjątek.
Również w tym przypadku po anulowaniu powinienem zrobić cts.Dispose ()?