我有这段代码,我需要使用从服务器获取数据的API,在这样做时我会显示一个加载指示符。我想为用户提供一个取消加载操作的选项,因为从服务器获取数据可能需要很长时间。
我目前的代码与此类似:
var results = new DataTable();
var task = TplUtilities.StartNew(() =>
{
loadingIndicator.CancellationTokenSource.Token
.Register(Thread.CurrentThread.Abort);
results = api.getDataFromServer();
});
task.Wait();
我的加载指示器有一个取消按钮,如果用户点击它,它将调用loadingIndicator.CancellationTokenSource.Cancel()。
这样可行,但我已经知道,中止一个帖子并不好。那么,结束这项任务的正确方法是什么?
根据我的研究,大多数示例都会对CancellationTokenSource.IsCancellationRequested
或CancellationTokenSource.Token.IsCancellationRequested
进行循环检查,但我无法在我的任务中执行此操作,因为它会停留在API调用中。< / p>