У меня есть код, который создает токен отмены
public partial class CardsTabViewModel : BaseViewModel
{
public CancellationTokenSource cts;
public async Task OnAppearing()
{
cts = new CancellationTokenSource(); // << runs as part of OnAppearing()
Код, который использует это:
await GetCards(cts.Token);
public async Task GetCards(CancellationToken ct)
{
while (!ct.IsCancellationRequested)
{
App.viewablePhrases = App.DB.GetViewablePhrases(Settings.Mode, Settings.Pts);
await CheckAvailability();
}
}
и код, который впоследствии отменяет этот токен отмены, если пользователь отходит от экрана, на котором выполняется приведенный выше код:
public void OnDisappearing()
{
cts.Cancel();
Что касается отмены, это правильный способ отменить токен, когда он используется в Задаче?
В частности, я проверил этот вопрос:
Использование свойства IsCancellationRequested?
и это заставляет меня думать, что я не делаю отмену правильным способом или возможно способом, который может вызвать исключение.
Кроме того, в этом случае после того, как я отменил, тогда я должен делать cts.Dispose ()?