Tôi có một XmlFileHelper lớp đơn giản như sau:C# XML.load() khóa tập tin trên đĩa lỗi gây
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
}
Vấn đề là tôi nhận được lỗi sau trên tải:
System.IO.IOException: The process cannot access the file ''C:\CvarUAT\ReportWriterSettings.xml'' **because it is being used by another process**
điều này xảy ra khi lớp này được sử dụng bởi hai trường hợp chạy của một thành phần chạy song song cả hai cố gắng tải tệp xml ở trên, đây là hành vi hợp pháp và được yêu cầu bởi ứng dụng.
Tôi chỉ muốn đọc trong đĩa xml một lần và giải phóng mọi tham chiếu đến tệp trên đĩa và sử dụng biểu diễn bộ nhớ từ điểm đó trở đi.
Tôi đã giả định tải hoạt động theo kiểu chỉ đọc và không cần khóa tệp, cách tốt nhất của tôi để đạt được kết quả mong muốn và giải quyết vấn đề này là gì?
Cảm ơn
Tôi đang cố gắng thực hiện điều này ngay bây giờ, cảm ơn – m3ntat
Tuyệt vời điều này đã làm các trick! – m3ntat