Listbox hinzufügen doch schon vom anderen Prozess verwendet
-
Hi ich will in einer Listbox Staffel x +1 immer hinzufügen. Aber irgendwie funktioniert es nicht das ich die Listbox wohl schon geöffnet habe. Habt ihr ne idee wie ich die datei kurzzeitg schliesen kann damit die fehler meldung nicht auftretet ?Dispose oder sowas áber wo und wie?
Danke
mfg
KillerQuellcode:
int a; a = 1 + listBox2.Items.Count; listBox2.Items.Add("Staffel "+a); //Staffel zur Serie Speichern StreamWriter sw = new StreamWriter(@"D:\Seriendatenbank\"+listBox1.Text+@"\Staffel.txt");//Bei den Usings "using System.IO;" einfügen for (int i = 0; i < this.listBox2.Items.Count; i++) { sw.WriteLine(this.listBox2.Items[i].ToString()); sw.Flush(); } sw.Close(); //Seriendatei erstellen listBox3.Items.Clear(); StreamWriter sw1 = new StreamWriter(@"D:\Seriendatenbank\" + listBox1.Text + @"\" +"Staffel "+a +".txt");//Bei den Usings "using System.IO;" einfügwn for (int i = 0; i < this.listBox3.Items.Count; i++) { sw1.WriteLine(this.listBox3.Items[i].ToString()); sw1.Flush(); } sw1.Close();
Fehlermeldung:
Der Prozess kann nicht auf die Datei D:\Seriendatenbank\Serie 5\Staffel.txt zugreifen, da sie von einem anderen Prozess verwendet wird.
-
An der Stelle, an der die Datei geöffnet wurde. Abgesehen von dirty Hacks die undefiniertes Verhalten erzeugen können, ist es besser wenn Du herausfindest wer die Finger auf die Datei hält. Ist es die eigene Applikation, musst Du nur an der passenden Codestelle die Datei auch wieder schließen. (Halte ausschau nach einem Handle das nicht geschlossen wurde.)
http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx kann Dir da eventuell helfen bei.
-
Sorry ich komme aber einfach nicht weiter ich krige es nicht hin. Habe ein komplett getrennte Programm gemacht und der Fehler tretet weiterhin auf. Habt ihr eine idee ?
Der Komplette Quelltext:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear(); string var = "";//Leere Stringvariable erstellen StreamReader sr = new StreamReader(@"D:\Staffel.txt"); //Einlesedatei defienieren while ((var = sr.ReadLine()) != null) //Schleife für auslesen erstellen { listBox1.Items.Add(var); //Hinzufügen in an sdie Selle der Leeren Variable } int a; a = 1 + listBox1.Items.Count; listBox1.Items.Add("Staffel " + a); //Staffel zur Serie Speichern StreamWriter sw = new StreamWriter(@"D:\Staffel.txt");//Bei den Usings "using System.IO;" einfügwn for (int i = 0; i > this.listBox1.Items.Count; i++) { sw.WriteLine(this.listBox1.Items[i].ToString()); sw.Flush(); } sw.Close(); } } }
-
Wo schließt du den StreamReader?
-
Flüchtigkeitsfehler sind schnell gemacht. Darum liebe ich die Anweisung "using":
using (StreamReader sr = new StreamReader(@"C:\Staffel.txt")) { [...] }
Siehe: http://msdn2.microsoft.com/en-us/library/yh598w02(VS.80).aspx
(P.S. Natürlich muss man auch wissen WAS ein Stream ist, damit man das Ganze versteht)