加载SyndicationFeed和async / await

时间:2016-05-18 13:45:11

标签: c# .net async-await xmlreader syndicationfeed

我们可以通过async / await读取RSS吗?

XmlReader reader = XmlReader.Create("http://localhost/feeds/serializedFeed.xml");
SyndicationFeed feed = SyndicationFeed.Load(reader);

有任何线索吗?

2 个答案:

答案 0 :(得分:1)

好的人,这是工作解决方案

private  void   GetRSS(string rssUrl)
        {
            Task.Factory.StartNew(() => {
                using (XmlReader r = XmlReader.Create(rssUrl))
                {
                    SyndicationFeed feed = SyndicationFeed.Load(r);
                    Action bindData = () => {
                        lstFeedItems.ItemsSource = feed.Items;
                    };
                    this.Dispatcher.InvokeAsync(bindData);
                }
            });
        }

答案 1 :(得分:1)

您的解决方案未使用async / await,代码过多,我怀疑您的方法在某些情况下容易出现死锁。

只需执行

var reader = XmlReader.Create("http://localhost/feeds/serializedFeed.xml");
var feed = await Task.Run(() => SyndicationFeed.Load(reader));