我在調用加載後保存我的XML文件時遇到問題。這個函數被調用兩次 - 當「toSave」被設置爲false時,第二次被設置爲true。第二次,保存會導致異常。我試着向XMLReader添加一個Dispose和Close調用,但似乎沒有任何幫助。這裏是代碼:C#XMLDocument保存 - 進程無法訪問該文件,因爲它正在被另一個進程使用
// Check if the file exists
if (File.Exists(filePath))
{
try
{
// Load the file
XmlReaderSettings readerSettings = new XmlReaderSettings();
readerSettings.IgnoreComments = true;
XmlReader reader = XmlReader.Create(filePath, readerSettings);
XmlDocument file = new XmlDocument();
file.Load(reader);
XmlNodeType type;
type = file.NodeType;
if (toSave)
ModifyXMLContents(file.FirstChild.NextSibling, null);
else
PopulateNode(file.FirstChild.NextSibling, null);
// Save if we need to
if (toSave)
file.Save(filePath);
reader.Dispose();
reader.Close();
}
catch (Exception ex)
{
// exception is: "The process cannot access the file d:\tmp\10.51.15.2\Manifest.xml" because it is being used by another process
Console.WriteLine(ex.Message);
}
}
任何幫助將不勝感激。
請不要張貼圖片的代碼。複製並粘貼到問題中 - 並非所有用戶都可以訪問該圖像,或者他們可能在移動設備上,並且無法清楚地看到圖像。 – Tim
我建議在關於如何有效地創建XML文檔 在看這篇文章[其他XML技術(http://www.albahari.com/nutshell/ch11.aspx) – MethodMan
您嘗試保存該文件在關閉之前讀者。讀者最有可能鎖定文件。嘗試調用'Save'收盤前的讀者(以及考慮使用'using'塊爲好)。 – Tim