У мене є код, який створює маркер скасування
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();
Що стосується скасування, чи це правильний спосіб скасувати маркер, коли він використовується у завданні?
Зокрема, я перевірив це питання:
Використання властивості IsCancellationRequeested?
і це змушує мене думати, що я не роблю скасування правильним способом або, можливо, таким чином, що може спричинити виняток.
Також у цьому випадку після скасування я повинен робити cts.Dispose ()?