close var XDocument.Load метод / способ - PullRequest
2 голосов
/ 04 января 2012

как мне закрыть этот документ, который назывался так:

var xmlDoc = XDocument.Load(new XmlTextReader(Server.MapPath("Nc.xml")));

спасибо

Ответы [ 2 ]

3 голосов
/ 04 января 2012

XmlTextReader реализует IDisposable.Как правило, вы должны вызывать IDisposable.Dispose (), как только вам больше не нужен ресурс, чтобы позволить системе закрывать открытые дескрипторы и т. Д.

Лучший шаблон использования для IDisposable - это использование usingсинтаксис, который будет вызывать IDisposable.Dispose () автоматически в неявной try..finally оболочке:

using (var reader = new XmlTextReader(Server.MapPath("Nc.xml")))
{
    var xdoc = XDocument.Load(reader);
    { .. do xdoc work here .. }
} // reader disposed here

или если вы хотите хранить xdoc долгое время для другой работы, но хотите закрыть файл каккак можно скорее, сделайте это так:

XDocument xdoc = null;
using (var reader = new XmlTextReader(Server.MapPath("Nc.xml")))
{
    xdoc = XDocument.Load(reader);
} // reader disposed here

{ .. do xdoc work here .. }
1 голос
/ 04 января 2012

Как только считыватель завершит работу, он автоматически закроет прочитанное.

в противном случае вывести ссылку для GC на

xmlDoc = null;

, который разрушит все внутренние открытые предметы.

...