Метод Getattribute(string)

Тема в разделе ".NET", создана пользователем Xrayboy, 26 окт 2010.

Статус темы:
Закрыта.
  1. Xrayboy

    Xrayboy Гость

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

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

    Файл ...

    Код (Text):
    <?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>
    Чем читаем ...

    Код (Text):
                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 адекватно один раз, то есть если метод первый из четырёх(если остальные раскоментировать).

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

    LuMee Well-Known Member

    Регистрация:
    2 май 2006
    Сообщения:
    477
    Симпатии:
    0
    В каком именно месте вылетает исключение? Приложение работает в один поток или несколько?
     
  3. CSerX

    CSerX Гость

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

Поделиться этой страницей