У меня есть программа, написанная на .NET 3.5, которая сохраняет данные в XML-файл, и большую часть времени оставит ее в покое. Однако иногда ему нужно снова прочитать этот XML-файл. Когда я пытаюсь это сделать, чтение XML-файла выходит из строя с ошибкой, что файл «используется другим процессом».DataSet.WriteXml (XmlTextWriter) Листы заблокированные XML
Вот код, который выполняет XML файла записи:
DataSet ds = new DataSet();
ds.Tables.Add(populatedDataTable);
XmlTextWriter xmlWrite = new XmlTextWriter("C:\test\output.xml", Encoding.UTF8);
ds.WriteXml(xmlWrite);
xmlWrite.Close();
И вот код, который пытается прочитать файл XML обратно в:
TextReader tr = new StreamReader("C:\test\output.xml");
DataSet dsXmlData = new DataSet();
dsXmlData.ReadXml(tr);
Поскольку метод XmlTextWriter.Close() запускается в первом блоке, почему файл все еще будет использоваться? Я попытался вызвать метод Dispose() в DataSet в первом блоке, но это не помогло. Что здесь можно пропустить?
Я также проверил запуск программы в режиме отладки, а затем немного дождался после того, как первый блок кода запустился, прежде чем продолжить. Он по-прежнему дает ту же ошибку, это не проблема с тем, что код работает так близко друг к другу, что запись файла не полностью выпущена до попытки чтения.
Спасибо!
Вы должны действительно использовать статический метод XmlWriter.Create в соответствии с MSDN. –