public static async Task<IList<Item>> UpdateFeedAsync(Feed feed, TimeSpan timeout) { using (var downloader = new DownloadHelper(timeout)) using (var reader = await downloader.DownloadXmlAsync(feed.Url)) { var factory = GetFeedFactory(reader); if (factory != null) { return factory.UpdateFeed(feed, reader); } return new Item[0]; } }
public static Feed DownloadFeed(string url, TimeSpan timeout) { using (var download = new DownloadHelper(timeout)) using (var reader = download.DownloadXml(url)) { var factory = GetFeedFactory(reader); if (factory != null) { var feed = factory.CreateFeed(reader, url); return feed; } return null; } }
// Instantiated as active download. public DownloadViewModel(ItemViewModel item, string filename) : this() { _downloadHelper = new DownloadHelper(Settings.Default.DownloadTimeout); _downloadHelper.DownloadProgressChanged += _downloadHelper_DownloadProgressChanged; Title = item.Title; FeedTitle = item.FeedTitle; FileName = filename; Url = item.PodcastUrl; State = DownloadState.Downloading; StartTime = DateTime.Now; _podcastType = DownloadHelper.GetPodcastType(FileName); // Timer for UI updates. _updateTimer = new DispatcherTimer(); _updateTimer.Interval = DownloadUpdateInternal; _updateTimer.Tick += _updateTimer_Tick; StartAsync(); // Start download. }