我有一段创建取消标记的代码
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();
关于取消,当token在任务中使用时,这是否是正确的取消方式?
我特别查看了这个问题:
这让我觉得我可能没有正确地取消,或者以一种可能导致异常的方式取消。
此外,在这种情况下,我取消后是否应该执行cts.Dispose()?