C# - Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird?

4 Antworten

Also entweder ist die Datei wirklich von einem anderen Programm geöffnet, oder es liegt daran, dass Du einen OpenFileDialog anstatt eines SaveFileDialog verwendest. Wenn es mit dem OpenFiledialog geht, so wie hier programmiert, dann muss ja die Datei schon im System vorhanden sein, sonst könntest Du sie ja nicht auswählen.


SuM2AdH 
Beitragsersteller
 18.12.2017, 08:59

Naja der Name des Buttons ist wohl etwas unglücklich gewählt von mir haha wenn ich auf den Erstellen-Button klicke, öffnet sich ein OpenFileDialog der die xml-Datei öffnet. Diese Datei ist aber in keinem anderen Programm geöffnet.

0
ohwehohach  18.12.2017, 09:13
@SuM2AdH

Naja, ist doch klar! Du machst einen Reader auf, der die Datei liest und in der nächsten Zeile machst Du einen StreamWriter auf dieselbe Datei auf - das kann ja gar nicht gehen!

Du musst entweder erst lesen, dann schreiben oder in eine Temp-Datei schreiben und dann diese nach dem Schließen aller Streams und Writer umbenennen.

0

Ich bin jetzt keine c#-Spezialistin, aber ich lese jetzt mal Deinen Quellcode ...

In buttonErstellen_Click willst Du eine Datei öffnen ... beim Öffnen rufst Du "DeserializeXml(ofd.FileName);" auf ... und da willst Du dann "xmlFileReader = XmlReader.Create(fileName);" diese gleiche Datei anlegen und danach beschreiben.

Einfaches Öffnen sieht anders aus ;) Meine zwei Cent ...


SuM2AdH 
Beitragsersteller
 18.12.2017, 09:54

Bruh :D

0

Du schließt den Reader nicht, er hält die Datei offen.

Wozu soll der Reader gut sein?

Ich lese es Grade am Handy möglich das ich was übersehe, aber es sieht so aus als ob der du ihn nur nutzt um die Datei zu erstellen?


SuM2AdH 
Beitragsersteller
 18.12.2017, 11:49

Es ist eigentlich so gedacht, das er eine xml-Datei öffnen und auch gleich validieren soll. Bin noch C#-Anfänger :D

0

Kenn ich.

Visual Studio vergisst beim "Abschießen" eines Programms, das im Debug-Modus läuft, manchmal, den Debug-Prozess zu beenden, und dieser Debug-Prozess hält die Programmdatei [Projektordner]\bin\Debug\[Projektname].exe gesperrt.

Such mal im Taskmanager nach allen Prozessen, die mit "vs" oder "debug" beginnen, und schieß die ab. (Der Prozess der VS-Entwicklungsumgebung heißt "devenv.exe")

Edit: "msvsmon.exe" gehört auch dazu

Woher ich das weiß:Berufserfahrung – Software-Entwickler