Beispiel #1
0
        private void RefreshFeed()
        {
            if (sources.Count > 0)
            {
                IEnumerable<FeedItem> newFeed = null;

                string[] sourcesCopy;
                lock (syncRoot)
                {
                    sourcesCopy = sources.ToArray();
                }

                foreach (var source in sources)
                {
                    if (newFeed == null)
                        newFeed = GetFeed(source);
                    else
                        newFeed = newFeed.Concat(GetFeed(source));
                }

                lock (syncRoot)
                {
                    feed = newFeed.ToList();
                    feed.SortByPublishDate();
                }
            }

            lock (syncRoot)
            {
                lastUpdated = DateTime.Now;
            }

            FeedRefreshed?.Invoke(this, new EventArgs());

            bool filterSet;
            lock (syncRoot)
            {
                filterSet = filterSources != null && filterSources.Length > 0;
            }
            if (filterSet)
                Task.Factory.StartNew(FilterBySource);
            else
                FilteredFeedRefreshed?.Invoke(this, new EventArgs());
        }
Beispiel #2
0
        public void AddSource(string source)
        {
            IEnumerable<FeedItem> newFeed;

            try
            {
                newFeed = GetFeed(source);
            }
            catch (Exception e)
            {
                throw new Exception("Unable to add source: " + e.Message, e);
            }

            lock (syncRoot)
            {
                sources.Add(source);

                feed = feed.Concat(newFeed).ToList();
                feed.SortByPublishDate();
            }
        }