通常,当您尝试在视图模型中执行异步任务时,代码如下所示(简化):
public class MyViewModel
{
private CancellationTokenSource CTS { get; set; }
public async Task Process()
{
CTS = new CancellationTokenSource();
try
{
await LongRunningTask(CTS.Token);
} catch (OperationCanceledException) { }
}
public async Task Cancel()
{
CTS.Cancel();
}
}
问题是这CancellationTokenSource
是一个IDisposable
. 这是否意味着我们只是将它放在一个using
块中,还是因为它存储在私有财产中,所以还有更多内容?