Datei wird weiterhin verwendet

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Fl3xXx.^.

    Datei wird weiterhin verwendet

    MoinZen!

    Es handelt sich um folgendes Problem:
    Ich schreibe mit meiner DataWriter Routine eine Datei

    VB.NET-Quellcode

    1. Shared Sub DataWriter(ByRef Benutzername As String, ByRef Name As String, ByRef Vorname As String, ByRef Betrag As String, ByRef Zahlungsstatus As String)
    2. Dim Pfad As String = "Datenbank\" & Benutzername & ".txt"
    3. Dim StrWr As New StreamWriter(Pfad)
    4. StrWr.WriteLine(Benutzername)
    5. StrWr.WriteLine(Name)
    6. StrWr.WriteLine(Vorname)
    7. StrWr.WriteLine(Zahlungsstatus)
    8. StrWr.WriteLine(Betrag)
    9. StrWr.Close()
    10. End Sub


    und will diese dann über meine Löschroutine löschen

    VB.NET-Quellcode

    1. Private Sub ButtonLöschen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonLöschen.Click
    2. Try
    3. Itemscount(ListViewListe)
    4. Dim ListViewItem As String = ListViewListe.SelectedItems.Item(0).Text
    5. MsgBox("Wollen sie die Daten zu " & ListViewItem & " wirklich löschen?", MsgBoxStyle.YesNo, "Wirklich löschen?")
    6. If CBool(vbYes) Then
    7. Try
    8. File.Delete("Datenbank\" & ListViewItem & ".txt")
    9. CommissionManager_Load(sender, e)
    10. Catch ex As Exception
    11. MsgBox("Die Datei konnte nicht gelöscht werden, da ein Fehler aufgetreten ist.", MsgBoxStyle.OkOnly, "Fehler")
    12. End Try
    13. End If
    14. If CBool(vbNo) Then
    15. Exit Sub
    16. End If
    17. Catch ex As Exception
    18. MsgBox("Es wurde kein Eintrag ausgewählt.", MsgBoxStyle.OkOnly, "Fehler")
    19. End Try
    20. End Sub


    Wenn ich dies aber auf einmal versuche(sprich erst eine Datei erstellen und danach gleich wieder löschen), ist das ganze nicht möglich.

    Hat da jemand eine Lösung das ich die Datei dazu bringe, nicht mehr verwendet zu werden?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Fl3xXx.^“ ()

    Der Fehler den er mir ausgibt ist folgender:

    Quellcode

    1. "IO Exception" wurde aufgerufen
    2. Der Prozess kann nicht auf die Datei "C:\Users\Felix Lambert\Documents\Visual Studio 2010\Projects\Commission-Manager\Commission-Manager\bin\Debug\Datenbank\fdsfdsds.txt" zugreifen, da sie von einem anderen Prozess verwendet wird.


    ich hab allerdings keine Ahnung wie ich das verändern soll bzw was ich machen soll.

    VB.NET-Quellcode

    1. Private Sub CommissionManager_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. If Not Directory.Exists("Datenbank\") Then
    3. Directory.CreateDirectory("Datenbank")
    4. End If
    5. Dim DateiListe() As String
    6. Dim x As Integer
    7. DateiListe = Directory.GetFiles("Datenbank\")
    8. ListViewListe.Items.Clear()
    9. For x = 0 To DateiListe.Count - 1
    10. Dim StRe As StreamReader = New StreamReader(DateiListe(x))
    11. ListViewListe.Items.Add(New ListViewItem(New String() {StRe.ReadLine(), StRe.ReadLine(), StRe.ReadLine(), StRe.ReadLine(), StRe.ReadLine(), StRe.ReadLine()}))
    12. Next
    13. Itemscount(ListViewListe)
    14. End Sub


    ---> das du da auch mal einen Überblick bekommst

    Nur zur Vollständigkeit:

    VB.NET-Quellcode

    1. Shared Sub Itemscount(ByRef ListViewListe As Object)
    2. If Not ListViewListe.Items.Count = 0 Then
    3. ListViewListe.Enabled = True
    4. End If
    5. If ListViewListe.Items.Count = 0 Then
    6. ListViewListe.Enabled = False
    7. End If
    8. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Fl3xXx.^“ ()

    Sry, aber Du hast meine Frage nicht beantwortet: geh mit dem Debugger rein und schau bei welchem Statement die Exception auftritt (Einzelschritt).

    Ausserdem dachte ich immer das heist Directory.Exists

    Edit: ausserdem fehlt mir hier ein Streamreader-Close

    VB.NET-Quellcode

    1. Dim StRe As StreamReader = New StreamReader(DateiListe(x))

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Kangaroo“ ()

    Fl3xXx.^ schrieb:

    Ein Streamreader Close ist allerdings gesetzt ;)

    Nicht in dem Code den Du gepostet hast:

    VB.NET-Quellcode

    1. For x = 0 To DateiListe.Count - 1
    2. Dim StRe As StreamReader = New StreamReader(DateiListe(x))
    3. ListViewListe.Items.Add(New ListViewItem(New String() {StRe.ReadLine(), StRe.ReadLine(), StRe.ReadLine(), StRe.ReadLine(), StRe.ReadLine(), StRe.ReadLine()}))
    4. Next

    Da machst Du jede Menge neuer StreamReader'chen auf die nicht geschlossen werden. Mit Dim wird jedes Mal ein neuer in der Schleife angelegt ...
    Na, das freut einen meiner doch zu so später Stunde ... und da ich ein gutmütiger Mensch bin würde es mir ja auch nie in den Sinn kommen diese Stelle hier zu zitieren ;)

    Fl3xXx.^ schrieb:

    Zumal das Programm funktioniert im Debug - Modus also ist garantiert kein Code falsch und so wie ich gearbeitet habe sind Fehler fast ausgeschlossen.

    Dann mach mir auch die Freude und set oben ein Directory.Exists rein, kann ich ja so nicht ansehen ...
    Kleiner Fehler passieren nunmal ;)

    Allerdings: Kleiner Feher = große Wirkung :D

    Den Code mit Directory.Exists habe ich übrigens abgeändert und das ganze mach ich auch noch hier.
    Das alles seine Richtigkeit hat;)

    DANKE NOCHMAL!