У меня возникли проблемы с сохранением моего XML-файла после вызова нагрузки. Эта функция вызывается дважды - один раз, когда для параметра «toSave» установлено значение «ложь», а затем второй раз, когда для него установлено значение «Истина». Во втором раунде сохранение вызывает исключение. Я попытался добавить вызов Dispose и Close в XMLReader, но ничего не помогает. Вот код: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