private void OnLoadCompleted(object sender, LoadContentEventArgs args) { XElement data = args.Data; if (data != null) { foreach (var elem in data.Descendants(m_creditType)) { Credit credit = new Credit { Name = HtmlToXamlConverter.ConvertHtmlToXml(elem.Element("name").Value).Value, Id = elem.Element("id").Value, Link = elem.Element("link").Value, Bank = elem.Element("bank").Element("name").Value, Rates = InitializeRates(elem.Element("short")) }; this.CreditList.Items.Add(credit); } } }
public void UpdateCollectionContent(XElement digest) { if (m_loadInProgress) { if (this.UpdateCompleted != null) { m_args.Error = new Exception("Already in use"); UpdateCompleted(this, m_args); } return; } m_loadInProgress = true; m_loadCancelled = false; ThreadPool.QueueUserWorkItem((state) => { if (m_event == null) { m_event = new ManualResetEvent(false); } string[] files = null; IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication(); string localLink = GetLocalLink(digest.Attribute("link").Value); string localDir = localLink.Substring(0, localLink.LastIndexOf("/")); if (myIsolatedStorage.DirectoryExists(localDir)) { files = myIsolatedStorage.GetFileNames(localDir + "/*"); } else { files = new string[1]; } for (int i = 0; i < files.Count() && !m_loadCancelled; i++) { m_event.Reset(); m_args.Error = null; m_args.Progress = i + 1; m_args.Data = null; string link = digest.Attribute("link").Value + "?page=" + Convert.ToString(i + 1); LoadCollectionFromRemote(link); m_event.WaitOne(); LoadContentEventArgs tmpArgs = new LoadContentEventArgs(m_args.Error, m_args.Data, m_args.Progress); Deployment.Current.Dispatcher.BeginInvoke(() => { if (this.UpdateProgress != null) { UpdateProgress(this, tmpArgs); } }); if (m_args.Error != null) { break; } m_args.Data.Add(new XAttribute("last_update_time", DateTime.Now.ToString())); SaveContent(link, m_args.Data); } Deployment.Current.Dispatcher.BeginInvoke(() => { if (this.UpdateCompleted != null) { UpdateCompleted(this, m_args); } }); m_loadInProgress = false; }); }