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); }
// 下载图标 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)); } }); }