Der Prozess kann nicht auf die Datei "Proberties.txt" zugreifen, da sie von einem anderen Prozess verwendet wird.

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Cozy.

    Der Prozess kann nicht auf die Datei "Proberties.txt" zugreifen, da sie von einem anderen Prozess verwendet wird.

    Moin,

    Mein Proramm soll auf Knopfdruck eine einfache Txt Datei erstellen und später auch was hineinschreiben. Wenn ich jetzt aber versuche, die Datei per Knopfdruck zu löschen, erhalte ich die Fehlermeldung aus dem Titel.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim folder As String = My.Computer.FileSystem.SpecialDirectories.ProgramFiles & "\CoCVisit\"
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. If TextBox1.Text = Nothing Or TextBox2.Text = Nothing Or TextBox3.Text = Nothing Then
    5. MsgBox("Nö")
    6. Else
    7. Try
    8. IO.Directory.CreateDirectory(folder & TextBox1.Text)
    9. IO.File.Create(folder & TextBox1.Text & "\Proberties.txt")
    10. Catch ex As Exception
    11. End Try
    12. End If
    13. End Sub
    14. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    15. If IO.Directory.Exists(folder) Then
    16. Else
    17. Try
    18. IO.Directory.CreateDirectory(folder)
    19. Catch ex As Exception
    20. MsgBox(ex.Message)
    21. End Try
    22. End If
    23. End Sub
    24. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    25. If ListBox1.SelectedItem = "" Then
    26. Button2.Visible = False
    27. Else
    28. Label1.Text = ListBox1.SelectedItem
    29. Button2.Visible = True
    30. End If
    31. Dim f As String
    32. For Each f In IO.Directory.GetDirectories(folder)
    33. Dim Name() As String = Split(f, folder)
    34. If ListBox1.Items.Contains(Name(1)) Then
    35. Else
    36. ListBox1.Items.Add(Name(1))
    37. End If
    38. Next
    39. Dim i As String
    40. Try
    41. For Each i In ListBox1.Items
    42. If IO.Directory.Exists(folder & i) Then
    43. Else
    44. ListBox1.Items.Remove(i)
    45. End If
    46. Next
    47. Catch ex As Exception
    48. End Try
    49. End Sub
    50. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    51. Try
    52. IO.Directory.Delete(folder & ListBox1.SelectedItem, True)
    53. Catch ex As Exception
    54. MsgBox(ex.Message)
    55. End Try
    56. End Sub
    57. End Class


    Hätte da jemand eine Lösung?

    Liebe Grüße
    Ich kam, sah und vergaß, was ich vorhatte.
    Das liegt daran das IO.File.Create einen Filestream zurueckgibt, du schliesst diesen nicht und deswegen kannste du die Datei nicht loeschen.

    Also den Returnwert in einer Variable vom Typ IO.Filestream parken, dann Close und anschliessend Dispose() aufrufen.

    VB.NET-Quellcode

    1. Dim x As IO.FileStream = IO.File.Create("D:\test.txt")
    2. x.Close()
    3. x.Dispose()

    Da IO.FileStream IDisposeable implementiert, sollte man dafuer eine Using anweisung verwenden.

    VB.NET-Quellcode

    1. Using fs As IO.FileStream = IO.File.Create("D:\test.txt")
    2. End Using


    Dann laesst sich die Datei auch loeschen, ohne das du dein Programm vorher schliessen musst.
    And i think to myself... what a wonderfuL World!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Eddy“ ()

    Oh man daran merkt man mal wieder, dass ich noch ganz am Anfang stehe D: Naja trotzdem vielen Dank!
    Ich kam, sah und vergaß, was ich vorhatte.