filestream-Problem
-
Mahlzeit,
beim Schreiben von Daten in eine txt-Datei bekomme ich regelmäßig eine Fehlermeldung, dass die Datei bereits von einem anderen Prozess verwendet wird. Allerdings kann ich mir nicht erklären, welcher das ist.
Genau tritt es bei folgender Konstellation auf:
Ich schreibe meinen Zustand "2" in dieses ParameterfileFileStream* fs = new FileStream(c,FileMode::Open,FileAccess::ReadWrite); StreamWriter* sw = new StreamWriter(fs); sw->WriteLine("2"); sw->Close();fs->Close();
Sobald jetzt das Close()-Ereignis eintritt, soll der Zustandswert "2" auf "0" geändert werden. Dementsprechend:
String* a = Convert::ToString(Path::GetDirectoryName(_pgmptr)); String* b = "\\parameter.tmp"; String* c = String::Concat(a,b); [b]FileStream* fs = new FileStream(c,FileMode::Open,FileAccess::ReadWrite);[/b] StreamWriter* sw = new StreamWriter(fs); sw->WriteLine("0"); sw->Close();fs->Close();
Sobald er die fett-gedruckte Zeile ausführt, tritt die Fehlermeldung auf. Die Datei existiert und eigentlich ist auch kein Prozess mit ihr beschäftigt, zur Sicherheit habe ich noch den FileAccess mit reingebastelt. Er sollte also nicht meckern. Trotzdem tut er es. Was noch verrückter ist: wenn ich dieses Programmteil das erste Mal ausführe, funktioniert es problemlos. Erst beim dritten Mal, kommt er aus dem Takt. Was mache ich verkehrt?
Die Datei wird noch an zwei anderen Stellen bearbeitet, aber der Fehler tritt erst bei der fett-gedruckten Zeile auf und auch erst, wenn der Zustand "2" eingetragen wurde.
Hilfe
physici
-
Okay, hat sich erledigt. Man sollte auch verwendete StreamReader zu machen