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(); }); }); }