BackgroundWorker1 Alles live Anzeigen?

  • VB.NET

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

    BackgroundWorker1 Alles live Anzeigen?

    Hallo, ich versuche meinen BackgroundWorker1 live auszugeben bzw. anzeigen zu lassen.
    Ich möchte gerne z.B. alles ausgeben was dort passiert und wo es grade ist z.B. 50% Fertig, 80% usw.

    Es soll hier mit gehen:

    VB.NET-Quellcode

    1. BackgroundWorker1.RunWorkerAsync()
    2. BackgroundWorker1.ReportProgress(hier die sub mit funktion)


    Dann soll mal den z.B. alles auf einen Label anzeigen lassen als Information mit:

    VB.NET-Quellcode

    1. BackgroundWorker1.ProgressChanged


    Kennt das jemand, kann ich bitte ein kleines Beispiel bekommen mit z.B. dieser funktion und Hello World?
    mfg
    Willkommen im Forum. :thumbup:

    Reginawaled schrieb:

    ein kleines Beispiel

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Me.BackgroundWorker1.WorkerReportsProgress = True ' dies geht auch im Designer
    3. Me.BackgroundWorker1.RunWorkerAsync()
    4. End Sub
    5. Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    6. For i = 0 To 100 Step 10
    7. Me.BackgroundWorker1.ReportProgress(i)
    8. System.Threading.Thread.Sleep(100)
    9. Next
    10. End Sub
    11. Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
    12. Me.Label1.Text = e.ProgressPercentage.ToString
    13. End Sub

    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!
    Hello world fehlt noch :)

    VB.NET-Quellcode

    1. Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs)
    2. If e.Cancelled = True Then
    3. Me.Label1.Text = "Abbruch durch Benutzer!"
    4. ElseIf e.Error IsNot Nothing Then
    5. Me.Label1.Text = "Fehler: " & e.Error.Message
    6. Else
    7. Me.Label1.Text = "Hallo Welt!"
    8. End If
    9. End Sub


    Code von: msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx
    Angepasst an Rods Code
    Sorry das ich erst jetzt Antworte und danke für Beide Hilfreiche antworten, genau diese habe ich gesucht Danke für eure Zeit.
    Eine Frage hab ich noch zu dieses:

    VB.NET-Quellcode

    1. If e.Cancelled = True Then
    2. Me.Label1.Text = "Abbruch durch Benutzer!"
    3. ElseIf e.Error IsNot Nothing Then


    Kann ich damit den Backgroundworker Beenden?
    Wenn ja muss ich das so beenden (z.B. in einem Button?):

    VB.NET-Quellcode

    1. e.Cancelled = True


    Danke :saint:

    Reginawaled schrieb:

    Kann ich damit den Backgroundworker Beenden?
    Nein.
    Du kannst dem Empfänger dieses Events mitteilen, dass der BGW abgebrochen wurde, dass z.B. eine Berechnung unvollständig ist.
    Abbrechen kannst Du einen BGW, indem Du die BackgroundWorker1_DoWork()-Routine verlässt, da kannst Du z.B. von außen ein entsprechendes Flag setzen:

    VB.NET-Quellcode

    1. Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    2. For i = 0 To 100 Step 10
    3. If AbbruchFlag = True Then Return
    4. Me.BackgroundWorker1.ReportProgress(i)
    5. System.Threading.Thread.Sleep(100)
    6. Next
    7. End Sub

    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!