コード例 #1
0
 private async void GetData(int cgKey, string url, bool isUpdate = false)
 {
     await DialogHost.Show(new DialogProgress("数据读取中..."), (object s, DialogOpenedEventArgs e) =>
     {
         Task.Run(() =>
         {
             // 从数据库中取出图鉴列表
             var cardModels = CardUtils.GetCardModels(cgKey);
             // 非手动刷新,直接调用本地缓存
             if (0 != cardModels.Count && !isUpdate)
             {
                 cardModels.ForEach(model =>
                 {
                     var iconPath = CardUtils.GetIconPath(model);
                     model.Icon   = File.Exists(iconPath) ? iconPath : model.IconUrl;
                 });
                 return(cardModels);
             }
             // 首次默认爬取网页数据
             var webModels = GetCardPreviewModels(url, cgKey);
             SyncIconData(cardModels.Select(model => model.Md5).ToList(), webModels);
             return(webModels);
         }).ToObservable().ObserveOnDispatcher().Subscribe(result =>
         {
             CardModels.Clear();
             result.ForEach(CardModels.Add);
             DownloadIcon(result);
             e.Session.Close();
         });
     });
 }