Метод Getattribute(string)

  • Автор темы Xrayboy
  • Дата начала
Статус
Закрыто для дальнейших ответов.
X

Xrayboy

Гость
#1
решил сохранять настройки в XML. При создании settings.xml всё проходит без ошибок.

Потом при чтении файла ...

Файл ...

Код:
<?xml version="1.0" encoding="utf-8"?>
<setting>
<files client_setitem="H:\Users\333\documents\visual studio 2010\Projects\xml_teacher\xml_teacher\bin\Debug\client_setitem.xml" item_sets="item_sets.xml" client_items="H:\Users\333\documents\visual studio 2010\Projects\xml_teacher\xml_teacher\bin\Debug\client_items.xml" client_strings="H:\Users\333\documents\visual studio 2010\Projects\xml_teacher\xml_teacher\bin\Debug\client_strings.xml" />
</setting>
Чем читаем ...

Код:
			XmlTextReader reader = null;
try
{
reader = new XmlTextReader("settings.xml");
// пропускаем пустые узлы
reader.WhitespaceHandling = WhitespaceHandling.None;

while (reader.Read())
if (reader.NodeType == XmlNodeType.Element)
if (reader.Name == "files")
{
//textBoxClientItems.Text = reader.GetAttribute("client_items");
//textBoxSaveItemSets.Text = reader.GetAttribute("item_sets");
//textBoxClientSetItem.Text = reader.GetAttribute("client_setitem");
textBoxClientString.Text = reader.GetAttribute("client_strings");
}
}
catch (Exception ex)
{
richTextBoxlog.Text = "Исключение: " + ex.Message + "\n";
}
finally
{
if (reader != null)
reader.Close();
}
Если использовать типа textBoxClientString.Text = reader.GetAttribute("client_strings"); то происходит исключение ...

Исключение: Процесс не может получить доступ к файлу " ... bin\Debug\settings.xml", так как этот файл используется другим процессом.

Самое что прикольное что значение reader.GetAttribute("client_strings") передаётся в textBoxClientString.Text адекватно один раз, то есть если метод первый из четырёх(если остальные раскоментировать).

Почему такое происходит? Если закоментировать строку с методом, то ошибки нет, а если раскоментировать один получается ошибка, но значение присвоится полю одекватное. Если открыть все четыре, то так же будет ошибка, но первый прочитается и присвоится полю одекватно.
 

LuMee

Well-Known Member
02.05.2006
477
0
#2
В каком именно месте вылетает исключение? Приложение работает в один поток или несколько?
 
C

CSerX

Гость
#3
Для данной задачи предлагаю использовать либо стандартные Settings у этого класса есть сохранить и загрузить, либо использовать XmlSerializer с его помощью можно сохранить класс в виде xml и обратно из xml в класс.
Может проблема в том что не по порядку вызываешь метод GetAttribute, этот reader может быть читает только в одну сторону без возврата.
 
Статус
Закрыто для дальнейших ответов.