Я подозреваю, что он не очищает поток, в который пишет.Потоковый вывод (включая вывод файла) обычно буферизуется, потому что он дает лучшую производительность для пакетирования байтов для записи в файл, а не для выполнения их по одному.(Преимущество увеличивает объем используемого вами буфера до 4 или 8 Кбайт, после чего стоимость используемой памяти перевешивает выигрыш. 4 и 8 имеют тенденцию быть лучше, чем что-то среднее, потому что они также хорошо влияют на размеры страниц памяти, вв любом случае буферы по умолчанию для большинства потоков, предоставляемых фреймворком, равны 4k).
В любом случае, если это проблема, вам необходимо очистить поток.Это всегда делается, когда вы закрываете писатель, а закрытие писателя всегда выполняется, когда вы Dispose()
его.Вы всегда должны утилизировать все, что реализует IDisposable
, как можно скорее, в качестве хорошей практики (всегда предполагайте, что что-то плохое, по крайней мере, может произойти, если вы этого не сделаете, даже в тех случаях, когда вы знаете, что данный Dispose()
в настоящее времяреализован как неоперативный).В большинстве случаев это проще всего сделать с помощью блока:
using(XmlTextWriter writer = new XmlTextWriter("C:\\hwout.xml", null))
{
//code that uses writer here
}
Даже если мое подозрение ошибочно, стоит попробовать сделать это.