tengo un simple XmlFileHelper clase de bloqueo de la siguiente manera:C# XML.load() archivo en el disco causando errores
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
}
La cuestión es que estoy recibiendo el siguiente error en la carga:
System.IO.IOException: The process cannot access the file ''C:\CvarUAT\ReportWriterSettings.xml'' **because it is being used by another process**
Esto ocurre cuando esta clase está siendo utilizada por dos instancias en ejecución de un componente que se ejecuta en paralelo, ambas tratando de cargar el archivo xml anterior, este es un comportamiento legítimo y requerido por la aplicación.
Solo quiero leer en el xml off disk una vez y liberar cualquier referencia al archivo en el disco y utilizar una representación en memoria desde ese punto en adelante.
Supongo que Load opera de manera que no tiene necesidad de bloquear el archivo, ¿cuál es la mejor manera de lograr el resultado deseado y evitar este problema?
Gracias
Estoy probando esto ahora, gracias – m3ntat
Excelente esto hizo el truco! – m3ntat