void wc_RefreshPodcastRSSCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            m_refreshingChannels--;
            if (m_refreshingChannels <= 0)
            {
                stateChangedArgs.state = PodcastSubscriptionsManager.SubscriptionsState.FinishedRefreshing;
                OnPodcastSubscriptionsChanged(this, stateChangedArgs);
            }

            if (e.Error != null)
            {
                Debug.WriteLine("ERROR: Got web error when refreshing subscriptions: " + e.ToString());
                ToastPrompt toast = new ToastPrompt();
                toast.Title = "Error";
                toast.Message = "Cannot refresh subscriptions.";

                toast.Show();
                return;
            }

            PodcastSubscriptionModel subscription = e.UserState as PodcastSubscriptionModel;
            subscription.CachedPodcastRSSFeed = e.Result as string;
            subscription.EpisodesManager.updatePodcastEpisodes();
        }
        void wc_RefreshPodcastRSSCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            PodcastSubscriptionModel subscription = e.UserState as PodcastSubscriptionModel;

            if (e.Error != null)
            {
                Debug.WriteLine("ERROR: Got web error when refreshing subscriptions: " + e.ToString());
                ToastPrompt toast = new ToastPrompt();
                toast.Title = "Error";
                toast.Message = "Cannot refresh subscription '" + subscription.PodcastName + "'";

                toast.Show();

                refreshNextSubscription();
                return;
            }

            subscription.CachedPodcastRSSFeed = e.Result as string;

            BackgroundWorker worker = new BackgroundWorker();
            worker.DoWork += new DoWorkEventHandler(workerUpdateEpisodes);
            worker.RunWorkerAsync(subscription);
            worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(workerUpdateEpisodesCompleted);
        }
        async void wc_RefreshPodcastRSSCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            PodcastSubscriptionModel subscription = e.UserState as PodcastSubscriptionModel;
            
            if (e.Error != null)
            {
                Debug.WriteLine("ERROR: Got web error when refreshing subscriptions: " + e.ToString());
                ToastPrompt toast = new ToastPrompt();
                toast.Title = "Error";
                toast.Message = "Cannot refresh subscription '" + subscription.PodcastName + "'";

                toast.Show();

                refreshNextSubscription();
                return;
            }

            subscription.CachedPodcastRSSFeed = e.Result as string;
            subscription.SubscriptionStatus = "";

            Debug.WriteLine("Starting refreshing episodes for " + subscription.PodcastName);
            await Task.Run(() => subscription.EpisodesManager.updatePodcastEpisodes());
            Debug.WriteLine("Done.");

            // Ugly.
            if (App.forceReloadOfEpisodeData)
            {
                subscription.reloadUnplayedPlayedEpisodes();
                subscription.reloadPartiallyPlayedEpisodes();
            }

            refreshNextSubscription();
            
        }
        void responseHandler(object sender, DownloadStringCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                requestTime = new TimeSpan(DateTime.Now.ToUniversalTime().Ticks - startRequestTime).Milliseconds;

                startParseTime = DateTime.Now.ToUniversalTime().Ticks;

                XDocument xmlItems = XDocument.Parse(e.Result);

                var source = from item in xmlItems.Descendants("item")
                             select new CensusItem
                             {
                                 itemId = (int)item.Element("itemId"),
                                 age = (int)item.Element("age"),
                                 classOfWorker = ((string)item.Element("classOfWorker")).Trim(),
                                 education = ((string)item.Element("education")).Trim(),
                                 maritalStatus = ((string)item.Element("maritalStatus")).Trim(),
                                 race = ((string)item.Element("race")).Trim(),
                                 sex = ((string)item.Element("sex")).Trim()
                             };

                parseTime = new TimeSpan(DateTime.Now.ToUniversalTime().Ticks - startParseTime).Milliseconds;

                startRenderTime = DateTime.Now.ToUniversalTime().Ticks;

                //System.Diagnostics.Debug.WriteLine("setting data");

                dg.ItemsSource = source.ToList<CensusItem>();

                //System.Diagnostics.Debug.WriteLine("data set");
            }
            else
            {
                System.Diagnostics.Debug.WriteLine(e.ToString());
            }
        }