Я создал класс с именем Shipment, который имеет следующий статический метод:
public static void WriteShipment(Shipment s, string path)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\t";
XmlWriter w = XmlWriter.Create(path, settings);
w.WriteStartDocument();
w.WriteStartElement("Shipment");
w.WriteStartElement("id");
w.WriteString(s.id);
w.WriteEndElement();
Address.WriteAddress(s.from, path);
Address.WriteAddress(s.to, path);
Date.WriteDate(s.receiveDate, path);
Date.WriteDate(s.deliverDate, path);
w.WriteStartElement("sum");
w.WriteValue(s.sum);
w.WriteEndElement();
w.WriteStartElement("currency");
w.WriteString(s.currency);
w.WriteEndElement();
w.WriteStartElement("paid");
w.WriteValue(s.paid);
w.WriteEndElement();
w.WriteEndElement();
w.WriteEndDocument();
w.Close();
}
Я пытаюсь написать метод, который получает экземпляр класса Shipment
и создает файл XML с егодетали.
Некоторые поля отгрузки имеют тип Address
и Date
, которые являются другими классами, которые я создал.У них также есть статические методы, которые записывают подробности экземпляра, полученные в качестве параметра, в файл XML.
Методы WriteAddress
и WriteDate
работают превосходно, но когда я пытаюсь вызвать их внутри метода WriteShipment
, я получаю следующее исключение во время выполнения -
"процесс не может получить доступ к файлу, потому что он используется другим процессом"
Я понял, что это происходит, потому что WriteAddress
и WriteDate
пытаются записать в тот же файл WriteShipment
ужепишет (так как все они используют один и тот же путь).
Есть ли способ преодолеть это?Любое другое решение, которое я пробовал, оказалось бесполезным или вызвало другие проблемы.