У меня есть простой класс XmlFileHelper следующим образом:
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
}
Проблема заключается в том, что при загрузке появляется следующая ошибка:
System.IO.IOException: The process cannot access the file ''C:\CvarUAT\ReportWriterSettings.xml'' **because it is being used by another process**
это происходит, когда этот класс используется двумя работающими экземплярами параллельного компонента, пытающегося загрузить файл xml выше, это законное поведение и требуется приложением.
Я хочу только один раз прочитать xml off disk и выпустить любую ссылку на файл на диске и использовать представление в памяти с этой точки вперед.
Я бы предположил, что Load работает в режиме readonly и не будет необходимости блокировать файл, каков мой лучший способ достичь желаемого результата и обойти эту проблему?
Спасибо