ich eine einfache Klasse XmlFileHelper haben wie folgt:C# XML.load() Sperrdatei auf dem Datenträger verursacht Fehler
public class XmlFileHelper
{
#region Private Members
private XmlDocument xmlDoc = new XmlDocument();
private string xmlFilePath;
#endregion
#region Constructor
public XmlFileHelper(string xmlFilePath)
{
this.xmlFilePath = xmlFilePath;
xmlDoc.Load(xmlFilePath);
}
#endregion
#region Public Methods
public XmlNode SelectSingleNode(string xPathQuery)
{
return xmlDoc.SelectSingleNode(xPathQuery);
}
public string GetAttributeValueByName(XmlNode node, string attributeName)
{
return node.Attributes.GetNamedItem(attributeName).Value;
}
#endregion
#region Public Properties
public string XmlFilePath
{
get
{
return xmlFilePath;
}
}
#endregion
}
Das Problem ist, ich bin den folgenden Fehler beim Laden bekommen:
System.IO.IOException: The process cannot access the file ''C:\CvarUAT\ReportWriterSettings.xml'' **because it is being used by another process**
Dies tritt auf, wenn diese Klasse von zwei ausgeführten Instanzen einer parallel ausgeführten Komponente verwendet wird, die beide versuchen, die obige XML-Datei zu laden. Dies ist ein zulässiges Verhalten und wird von der Anwendung benötigt.
Ich möchte nur einmal in der XML-Off-Disk einlesen und einen Verweis auf die Datei auf der Festplatte freigeben und eine In-Memory-Darstellung ab diesem Punkt verwenden.
Ich hätte angenommen, dass Load schreibgeschützt arbeitet und die Datei nicht sperren muss. Was ist meine beste Methode, um das gewünschte Ergebnis zu erzielen und dieses Problem zu umgehen?
Dank
Ich probiere das jetzt aus, danke – m3ntat
Ausgezeichnet Das hat den Trick gemacht! – m3ntat