Über Backgorundworker Label ändern?

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von PhilipoLovesVB.

    Über Backgorundworker Label ändern?

    Hallo Liebe Community,

    Ich bins zum erneuten male.... Ich habe ein kleines Problem, denn ich möchte aus meine Backgroundworker eine Aufgabe ausführen und zwischendurch soll er vllt. auch mal ein Label ändern. Das geht aber nicht da zeigt er mir an: Ungültiger threadübergreifender Vorgang. und dann dacht ich mir ich mache es so: Form1.Label1.Text = "Test" dies Funktioniert aber auch nicht?!? (Fehler: Form1 kann durch die Standartinstanz auf sich selbst verweisen. Verwenden sie stattdessen "Me")

    Hilfe :( ich bin echt am verzweifeln ich habe es sogar über andere Klassen versucht :(((

    MFG Phil
    Der BackGroundWorker hat das Event ProgressChanged. Dort hast Du synchronisierten Zugriff auf die Controls Deiner Form. Wenn es ausserhalb dieser Funktion sein muss, dann verwende Invoke oder BeginInvoke.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @PhilipoLovesVB: Der BackgroundWorker ist extra dafür gemacht, dass das Handling sehr vereinfacht ist und dass die ganzen Thread-Methoden nicht erforderlich sind.
    Dafür ist er nicht ganz so mächtig wie ein "ganz richtiger" Thread.
    Machma eine Form mit Button, Label und BackgroundWorker, letzterem gib WorkerReportsProgress = True und teste mal diesen Code:
    BackgroundWorker

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    3. BackgroundWorker1.RunWorkerAsync()
    4. End Sub
    5. Private Sub BackgroundWorker1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    6. For i = 1 To 10
    7. Threading.Thread.Sleep(100)
    8. BackgroundWorker1.ReportProgress(i * 10)
    9. Next
    10. End Sub
    11. Private Sub BackgroundWorker1_ProgressChanged(sender As System.Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
    12. Label1.Text = e.ProgressPercentage.ToString & " %"
    13. End Sub
    14. Private Sub BackgroundWorker1_RunWorkerCompleted(sender As System.Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
    15. Label1.Text = "Feddich"
    16. End Sub
    17. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!