Fehler beim Schreiben einer Datei - Listview

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ThuCommix.

    Fehler beim Schreiben einer Datei - Listview

    Hallo liebes vb-paradiese!

    Ich möchte die Items eines Listviews in einer Datei speichern und verwende dazu diesen Code:

    VB.NET-Quellcode

    1. Sub Save()
    2. ' Try
    3. Dim vpr As New IO.StreamWriter(Application.StartupPath & "\List1.dat") ' Sollte eigentlich klar sein
    4. For i As Integer = 0 To ListView1.Items.Count - 1 ' Schleife die alle Items in deiner Listview abarbeitet ( -1 , weil der Index mit 0 beginnt)
    5. vpr.WriteLine(ListView1.Items(i).Text) 'Schreibe in Linie 1 der Txt Datei den Text des ersten Items usw...
    6. vpr.WriteLine(ListView1.Items(i).SubItems(1).Text)
    7. vpr.WriteLine(ListView1.Items(i).SubItems(2).Text)
    8. vpr.WriteLine(ListView1.Items(i).SubItems(3).Text) 'Kommt drauf an wieviele Spalten du hast.
    9. Next
    10. vpr.Close() 'Datei schließen
    11. ' Catch ex As Exception
    12. ' End Try
    13. End Sub



    Doch dieser Fehler kommt,
    Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement ListView1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.
    Bei Zeile

    VB.NET-Quellcode

    1. vpr.WriteLine(ListView1.Items(i).Text)



    Doch ich weiß nicht wieso denn dieser Code hat (bilde ich mir ein) schon funktioniert.

    Bitte um Hilfe.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Wie?

    Ich starte es einfach mit Call Save
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement ListView1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.


    So ein Fehler kommt meistens bei Multithreading, wenn man keine Delegates benutzt.
    Wie kann ich das dann anderst machen?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Was?

    Hättest du da ein "Tutorial" (Einen Link oder so) der mir das erklärt?

    Oder könntest du das?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Hey, müsstest mal gucken, ob das funktioniert.


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub GetItems(ByVal Listview As ListView)
    2. 'Hier Items schreiben
    3. End Sub


    Und der Aufruf mit:

    VB.NET-Quellcode

    1. Me.BeginInvoke(DirectCast(AddressOf GetItems, Action(Of ListView)), Listview1)




    Grüße
    Wie hier items eintragen?

    Meinst du

    VB.NET-Quellcode

    1. ' Try
    2. Dim vpr As New IO.StreamWriter(Application.StartupPath & "\List1.dat") ' Sollte eigentlich klar sein
    3. For i As Integer = 0 To ListView1.Items.Count - 1 ' Schleife die alle Items in deiner Listview abarbeitet ( -1 , weil der Index mit 0 beginnt)
    4. vpr.WriteLine(ListView1.Items(i).Text) 'Schreibe in Linie 1 der Txt Datei den Text des ersten Items usw...
    5. vpr.WriteLine(ListView1.Items(i).SubItems(1).Text)
    6. vpr.WriteLine(ListView1.Items(i).SubItems(2).Text)
    7. vpr.WriteLine(ListView1.Items(i).SubItems(3).Text) 'Kommt drauf an wieviele Spalten du hast.
    8. Next vpr.Close() 'Datei schließen
    9. ' Catch ex As Exception
    10. ' End Try


    ?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Ja


    VB.NET-Quellcode

    1. Private Sub GetItems(ByVal Listview As ListView)
    2. Dim vpr As New IO.StreamWriter(Application.StartupPath & "\List1.dat") ' Sollte eigentlich klar sein
    3. For i = 0 To Listview.Items.Count - 1
    4. vpr.WriteLine(Listview.Items(i).Text)
    5. vpr.WriteLine(Listview.Items(i).SubItems(1).Text)
    6. vpr.WriteLine(Listview.Items(i).SubItems(2).Text)
    7. vpr.WriteLine(Listview.Items(i).SubItems(3).Text)
    8. Next
    9. vpr.Close()
    10. End Sub



    Grüße