c # xml.Load () blokujący plik na dysku powodujący błędy
Mam prostą klasę XmlFileHelper w następujący sposób:
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
}
Problem polega na tym, że otrzymuję następujący błąd podczas ładowania:
System.IO.IOException: The process cannot access the file ''C:\CvarUAT\ReportWriterSettings.xml'' **because it is being used by another process**
Dzieje się tak, gdy ta klasa jest przyzwyczajona do dwóch uruchomionych instancji składnika działającego równolegle, zarówno próbujących załadować powyższy plik xml, jest to zgodne z prawem zachowanie i wymagane przez aplikację.
Chcę tylko wczytać plik xml z dysku i zwolnić wszelkie odniesienia do pliku na dysku i użyć reprezentacji pamięci od tego punktu do przodu.
Zakładałbym, że Load działa w trybie tylko do odczytu i nie ma potrzeby blokowania pliku, jaki jest mój najlepszy sposób na osiągnięcie pożądanego rezultatu i obejście tego problemu?
Dzięki