private async Task <ISyndicationItem> ReadItem(Rss20FeedReader reader)
        {
            ISyndicationItem item = null;

            if (_sizeOfItem == 0)
            {
                //The size of the item has not been read.
                ISyndicationContent content = await reader.ReadContent();

                //_sizeOfItem = Encoding.UTF8.GetByteCount(content.RawContent);
                _sizeOfItem = 291; // content.RawContent.Length;

                Rss20FeedParser parser = reader.Parser as Rss20FeedParser;
                item = parser.CreateItem(content);
            }
            else
            {
                item = await reader.ReadItem();
            }

            return(item);
        }
        public static async Task ReadFeed()
        {
            using (XmlReader xmlReader = XmlReader.Create(@"..\DemoTest1\TestFeeds\rss20.xml", new XmlReaderSettings()
            {
                Async = true
            }))
                using (XmlWriter xmlWriter = XmlWriter.Create(Console.Out, new XmlWriterSettings()
                {
                    Indent = true, Async = true
                }))
                {
                    Rss20FeedReader reader = new Rss20FeedReader(xmlReader);
                    Rss20FeedWriter writer = new Rss20FeedWriter(xmlWriter);

                    while (await reader.Read())
                    {
                        switch (reader.ElementType)
                        {
                        case SyndicationElementType.Category:
                            ISyndicationCategory category = await reader.ReadCategory();

                            await writer.Write(category);

                            break;

                        case SyndicationElementType.Image:
                            ISyndicationImage image = await reader.ReadImage();

                            await writer.Write(image);

                            break;

                        case SyndicationElementType.Item:
                            ISyndicationItem item = await reader.ReadItem();

                            await writer.Write(item);

                            break;

                        case SyndicationElementType.Link:
                            ISyndicationLink link = await reader.ReadLink();

                            await writer.Write(link);

                            break;

                        case SyndicationElementType.Person:
                            ISyndicationPerson person = await reader.ReadPerson();

                            await writer.Write(person);

                            break;

                        default:
                            ISyndicationContent content = await reader.ReadContent();

                            await writer.Write(content);

                            break;
                        }

                        xmlWriter.Flush();
                        // Simulate a slow stream.
                        Thread.Sleep(300);
                    }
                }
        }