2009-08-06 12 views
0

Hallo Ich arbeite an einem Projekt, in dem ich xml schreiben müssen, in eine Datei accesssed als Datei, auf die zugegriffen werden, dieser for-Schleife in einem FallFehler: Datei kann nicht von einem anderen Prozess

, das ist

basicalyy auf das XML-Dokument zugegriffen wird, modifiziert und in einer for-Schleife gespeichert, dies funktioniert einige Male. und einig thimes ich folgende Fehlermeldung erhalten,

ich versuche, Text Leser verwenden, Texter Dateioperationen zu tun (so dass ich schließen kann, verfügt die Autoren), aber der Fehler bestehen bleibt, Kann jemand empfehlen, wie ich bekommen kann durch dies ??

Vielen Dank im Voraus.

Antwort

5

Dies könnte (nicht sicher, obwohl), weil Sie wieder zu öffnen, die XML-Datei für jede Iteration der Schleife, die unnnecessary scheint. Öffnen Sie stattdessen das Dokument vor der Schleife, führen Sie die Schleife aus, und speichern Sie es dann.

XMLDocument allScreens = new XMLDocument(); 
allScreens.Load(allScreeensPath); 

for(int i = 0; i < screens.length; screens++) 
{ 
    XMLNode node = allScreens.Select("//Screen[@name='" + screens[i].name + "']"); 
    allScreens.Remove(node); 
    allScreens.Add(nweNode); 
} 
allScreens.Save(allScreeensPath); 

(Ich bin nicht sicher, wo nweNode in das Bild in dem Codebeispiel kommt, aber ich lasse es in da ich nur die ursprüngliche Codebeispiel überarbeitet)

4

Der einfachste Weg wäre, es einmal zu laden, alle erforderlichen Verarbeitungen durchzuführen und dann einmal zu speichern.

Ich weiß nicht, warum es im Moment nicht funktioniert, aber ich sehe keine Notwendigkeit, weiter zu laden und zu speichern. Zum Beispiel, hier ist eine alternative Version des Codes:

XMLDocument allScreens = new XMLDocument(); 
allScreens.Load(allScreeensPath); 
foreach (Screen screen in screens) 
{ 
    XMLNode node = allScreens.Select("//Screen[@name='" + screen.Name + "']"); 
    allScreens.Remove(node); 
    allScreens.Add(newNode); 
} 
allScreens.Save(allScreeensPath); 
0

Es sieht aus wie Sie die gleiche Datei aktualisieren mehrmals?

Sie sollten alle Aktualisierungen Ihres In-Memory-XML-Dokuments durchführen und nach der for-Schleife in der Datei speichern.

Verwandte Themen