/// <summary> /// 升级缓存 /// </summary> /// <param name="channels">需要缓存的页面列表</param> /// <returns></returns> private async Task AddCachePage(params CustomPage[] pages) { var list = pages.Distinct().ToArray(); var localFolder = ApplicationData.Current.LocalFolder; var file = await localFolder.CreateFileAsync("CachePageList.json", CreationCollisionOption.OpenIfExists); string content = await FileIO.ReadTextAsync(file); if (string.IsNullOrEmpty(content)) { content = "[]"; } var results = JsonConvert.DeserializeObject <List <CacheModel> >(content); var tasks = new List <Task>(); if (list.Length > 0) { foreach (var page in list) { tasks.Add(Task.Run(async() => { var articles = await AppTools.GetSchemaFromPage(page, true); int now = AppTools.DateToTimeStamp(DateTime.Now.ToLocalTime()); if (results.Any(p => p.Page.Id == page.Id)) { var target = results.Where(p => p.Page.Id == page.Id).First(); target.Feeds = articles; target.CacheTime = now; } else { results.Add(new CacheModel() { Page = page, Feeds = articles, CacheTime = now }); } })); } try { await Task.WhenAll(tasks.ToArray()); } catch (Exception ex) { Debug.WriteLine(ex.Message); } finally { content = JsonConvert.SerializeObject(results); await FileIO.WriteTextAsync(file, content); } } }