【发布时间】:2018-10-21 09:39:11
【问题描述】:
我创建了一个名为 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 文件。
Shipment 的一些字段类型为Address 和Date,它们是我创建的其他类。它们还具有静态方法,可将作为参数接收的实例的详细信息写入 XML 文件。
WriteAddress 和 WriteDate 方法运行良好,但是当我尝试在 WriteShipment 方法中调用它们时,在运行时出现以下异常 -
“该进程无法访问文件,因为它被另一个进程使用”
我发现这是因为WriteAddress 和WriteDate 试图写入WriteShipment 已经写入的同一个文件(因为它们都共享相同的路径)。
有没有办法克服这个问题?我尝试过的任何其他解决方案都被证明是徒劳的或导致其他问题。
【问题讨论】:
-
使用 try 和 catch 和 using...查看此链接 --> stackoverflow.com/questions/1346995/…
标签: c# xml exception io ioexception