По соображениям производительности многие из классов *Writer
в .NET буферизуют свои выходные данные; то есть они не записывают прямо в устройство вывода, а хранят некоторые данные в памяти, пока они не достигнут порогового размера. Когда вы закрываете / утилизируете модуль записи, он узнает, что вы покончили с ним, и сбросит все буферизованные данные в вывод.
Здесь вы создаете XmlWriter
, но никогда не закрываете и не утилизируете его, поэтому, вероятно, он по-прежнему содержит буферизованное содержимое, которое никогда не сбрасывается, следовательно, неполный файл. Вы также оставляете дорогие ресурсы открытыми дольше, чем необходимо, не выбрасывая их.
Окружите ваши экземпляры классов, реализующих IDisposable
блоком using
, например:
using (XmlWriter writer = XmlWriter.Create(rssFileName))
{
rss2.WriteTo(writer);
}
Это вызовет метод Dispose
для модуля записи в конце блока и очистит содержимое. Вы также должны окружить экземпляр XmlReader
блоком using
.