BackgroundWorker

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von AsdAsd1337.

    BackgroundWorker

    Guten Tag

    Ich arbeite derzeit mit dem BackgroundWorker. Schön und gut ich bekomme derzeit folgenen Fehler Code

    Spoiler anzeigen

    System.InvalidOperationException wurde nicht von Benutzercode behandelt.
    Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement ListBox1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.


    auf folgenden Code

    VB.NET-Quellcode

    1. Dim laden As String = "0"
    2. Do
    3. ListBox1.Items.Clear()
    4. ListBox1.Items.Add("Lädt .")
    5. ListBox1.Items.Clear()
    6. ListBox1.Items.Add("Lädt ..")
    7. ListBox1.Items.Clear()
    8. ListBox1.Items.Add("Lädt ...")
    9. ListBox1.Items.Clear()
    10. laden = +1
    11. Loop Until (laden = "3")
    12. ...


    Hoffe ihr könnt mir dabei helfen

    Lg Leon
    Hallo Halfbax,

    Du darfst nicht von einem Backgroundworker aus auf eine Form zugreifen.
    Das müsstest du anders klären,

    Beispiel:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. BackgroundWorker1.RunWorkerAsync()
    4. End Sub
    5. Private Delegate Sub delegate_ChTXT(ByVal Text As String)
    6. Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    7. Me.Invoke(New delegate_ChTXT(AddressOf ChangeTXT), "Der Text")
    8. End Sub
    9. Private Sub ChangeTXT(ByVal Text As String)
    10. checkstate.Text = Text
    11. End Sub
    12. End Class


    Das Beispiel habe ich damals irgendwo aufgefischt.
    Sollte aber verständlich sein
    Der BgW hat doch die Events ProgressChanged und RunWorkerComnpleted, welche im GUI-Thread laufen und das manipulieren von Steuerelementen erlauben. Rufe in DoWork einfach BgW.ReportProgress(...) auf und passe die UI in ProgressChanged an.
    Vorher noch WorkerReportsProgress auf True setzen.

    Viele Grüße, Phil.
    Vielen Dank,

    Ich möchte eine größere Aufgabe erledigen die auf die Form zugreift, nur wie genau kann ich das machen.

    Source

    Spoiler anzeigen

    VB.NET-Quellcode

    1. If Not My.Settings.text1 = "" Then
    2. ListBox1.Items.Add(My.Settings.text1_name)
    3. ElseIf Not My.Settings.text2 = "" Then
    4. ListBox1.Items.Add(My.Settings.text2_name)
    5. ElseIf Not My.Settings.text3 = "" Then
    6. ListBox1.Items.Add(My.Settings.text3_name)
    7. ElseIf Not My.Settings.text4 = "" Then
    8. ListBox1.Items.Add(My.Settings.text4_name)
    9. ElseIf Not My.Settings.text5 = "" Then
    10. ListBox1.Items.Add(My.Settings.text5_name)
    11. ElseIf Not My.Settings.text6 = "" Then
    12. ListBox1.Items.Add(My.Settings.text6_name)
    13. ElseIf Not My.Settings.text7 = "" Then
    14. ListBox1.Items.Add(My.Settings.text7_name)
    15. ElseIf Not My.Settings.text8 = "" Then
    16. ListBox1.Items.Add(My.Settings.text8_name)
    17. ElseIf Not My.Settings.text9 = "" Then
    18. ListBox1.Items.Add(My.Settings.text9_name)
    19. ElseIf Not My.Settings.text10 = "" Then
    20. ListBox1.Items.Add(My.Settings.text10_name)
    21. ElseIf Not My.Settings.text11 = "" Then
    22. ListBox1.Items.Add(My.Settings.text11_name)
    23. ElseIf Not My.Settings.text12 = "" Then
    24. ListBox1.Items.Add(My.Settings.text12_name)
    25. ElseIf Not My.Settings.text13 = "" Then
    26. ListBox1.Items.Add(My.Settings.text13_name)
    27. ElseIf Not My.Settings.text14 = "" Then
    28. ListBox1.Items.Add(My.Settings.text14_name)
    29. ElseIf Not My.Settings.text15 = "" Then
    30. ListBox1.Items.Add(My.Settings.text15_name)
    31. ElseIf Not My.Settings.text16 = "" Then
    32. ListBox1.Items.Add(My.Settings.text16_name)
    33. ElseIf Not My.Settings.text17 = "" Then
    34. ListBox1.Items.Add(My.Settings.text17_name)
    35. ElseIf Not My.Settings.text18 = "" Then
    36. ListBox1.Items.Add(My.Settings.text18_name)
    37. End If


    Lg Leon