Beispiel #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();
         });
     });
 }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var md5       = value?.ToString();
            var cardModel = CardUtils.GetCardModel(md5);
            var iconUrl   = cardModel.IconUrl;
            var iconPath  = CardUtils.GetIconPath(cardModel);

            return(File.Exists(iconPath) ? iconPath : iconUrl);
        }
Beispiel #3
0
 // 下载图标
 private void DownloadIcon(IEnumerable <CardModel> cardModels)
 {
     Task.Factory.StartNew(() =>
     {
         Thread.Sleep(1000);
         var downloadModels = cardModels
                              .Where(model => !File.Exists(CardUtils.GetIconPath(model)))
                              .ToList();
         foreach (var downloadModel in downloadModels)
         {
             DownloadImage(downloadModel.IconUrl, CardUtils.GetIconPath(downloadModel));
         }
     });
 }