当浏览网页,我打电话视图模型停止和恢复异步调用
public void OnNavigatedTo()
{
ThreadPool.QueueUserWorkItem(async o =>
{
collectionsAnswer = await productCategoriesDataService.RequestServerAsync();
***
if (collectionsAnswer.status == Ok)
{
var parsedList = await productCategoriesDataService.Parse(collectionsAnswer.json);
_itemsList = new List<ProductItem>(parsedList);
DispatcherHelper.CheckBeginInvokeOnUI(() =>
RaisePropertyChanged("ItemsList", _itemsList, _itemsList, true));
}
}
如何停止/正常恢复呢?我尝试从OnNavigatedFrom()中取消当前的HttpWebResponse(它位于RequestServerAsync()的内部),但是当我再次返回同一页时,它崩溃了。
因此,简而言之,问题是:
- 导航页开始等待命令
- 离开该页面(按后)应取消当前请求
- 访问页面应该创建新的请求,但等待仍在等待(如果返回足够快)
有没有更好的方法来解决这个问题?也许我应该每次创建viewmodels的新实例?
您的产品类别数据服务方法是否接受取消令牌? –
你为什么要提交一个异步调用ThreadPool?如果RequestServerAsync真的是异步的,那么你的调用最终会在ThreadPool中结束。 –
@PanagiotisKanavos只是为了应对疯狂的回调。 –