Загрузите SyndicationFeed и async/await

Можем ли мы читать RSS по async/await?

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

Любая подсказка?

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);
                }
            });
        }

Ваше решение не использует async/await, имеет слишком много кода, и я подозреваю, что ваш подход склонен к взаимоблокировкам при определенных сценариях.

Просто сделай это

var reader = XmlReader.Create("http://localhost/feeds/serializedFeed.xml");
var feed = await Task.Run(() => SyndicationFeed.Load(reader));
Другие вопросы по тегам