Ho una semplice funzione di C# che crea un file XML di base e consente di risparmiare:XmlDocument Salva mantiene file aperto
private void CreateXMlFile(string Filename, string Name, string Company)
{
XmlDocument doc = new XmlDocument();
XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.AppendChild(docNode);
XmlNode licenseNode = doc.CreateElement("license");
doc.AppendChild(licenseNode);
XmlNode node = doc.CreateElement("Name");
node.AppendChild(doc.CreateTextNode(Name));
licenseNode.AppendChild(node);
node = doc.CreateElement("Company");
node.AppendChild(doc.CreateTextNode(Company));
licenseNode.AppendChild(node);
doc.Save(Filename);
}
Quando si tenta di modificare o eliminare il file ottengo sempre seguente errore:
The process cannot access the file because it is being used by another process.
XmlDocument non dispone di routine di eliminazione o chiusura incorporate e si chiede come posso forzare la chiusura del file prima di modificarlo o eliminarlo in seguito.
Ho cercato di salvare il file utilizzando StreamWriter:
StreamWriter outStream = System.IO.File.CreateText(outfile);
outStream.Write(data);
outStream.Close();
Ma questa non fare la differenza con lo stesso errore.
Il tuo consiglio è molto apprezzato.
Grazie
Hai provato a scriverlo con un'istanza di una scrittura in streaming invece di passare il nome del file da salvare? – Steve
Ho avuto lo stesso problema, ma il mio codice stava caricando prima l'XML se esisteva. L'oggetto 'XmlReader' doveva essere chiuso prima che il blocco del file fosse liberato. –