#c#
#c#
Вопрос:
У меня есть набор данных с именем dS, в который я хочу загрузить XML.
Поэтому я бы использовал функцию dS.ReadXml();
Параметром для ReadXml
функции является XmlTextReader
Object .
Если я передаю объект как
ds.ReadXml(new XmlTextReader(Application.StartupPath "\MyDataSource.xml"));
набор данных будет загружен. Но позже я хочу закрыть этот XmlTextReader
объект. Хотя я не объявлял ее с таким именем, как
XmlTextReader reader = new XmlTextReader(somepath);
Как я могу закрыть программу чтения???
Комментарии:
1. вы уже ответили себе: с переменной
![]()
Ответ №1:
Вам нужно будет использовать переменную, иначе вы не сможете получить к ней доступ.
И пока вы этим занимаетесь, используйте using
инструкцию:
string path = Path.Combine(Application.StartupPath, "MyDataSource.xml"));
using (var reader = new XmlTextTreader(path))
{
ds.ReadXml(reader);
}
using
Инструкция автоматически вызывает Dispose
on reader
при выходе из области действия using
инструкции.
Примечание: Вы должны использовать Path.Combine
вместо объединения пути самостоятельно. Избавляет вас от множества проблем.
Ответ №2:
Объект XmlTextReader используется объектом DataSet, поэтому он не собирается как мусор.
Теперь, если вдуматься, это означает, что объект DataSet управляет объектом XmlTextReader *.
Итак, лучший способ — вызвать:
ds.Dispose()
Это приведет к тому, что объект DataSet освободит свои ресурсы, включая объект XmlTextReader*.