c # xml.Load () - Sperrdatei auf der Festplatte, die Fehler verursacht

Ich habe eine einfache Klasse XmlFileHelper wie folgt:

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, dass beim Laden die folgende Fehlermeldung angezeigt wird:

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 Komponente verwendet wird, die parallel ausgeführt werden und beide versuchen, die obige XML-Datei zu laden. Dies ist ein legitimes Verhalten und wird von der Anwendung benötigt.

Ich möchte die XML-Off-Disk nur einmal einlesen und alle Verweise auf die Datei auf der Disk freigeben und von diesem Punkt an eine In-Memory-Darstellung verwenden.

Ich hätte angenommen, dass Load schreibgeschützt arbeitet und die Datei nicht gesperrt werden muss. Was ist mein bester Weg, um das gewünschte Ergebnis zu erzielen und dieses Problem zu umgehen?

Vielen Dank

Antworten auf die Frage(4)

Ihre Antwort auf die Frage