當瀏覽網頁,我打電話視圖模型停止和恢復異步調用
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只是爲了應對瘋狂的回調。 –