Backgroundworker einfügen

  • VB.NET

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

    Backgroundworker einfügen

    Tut mir leid, dass ich mich nochmals melde, aber ich möchte gerne einen Backgroundworker in unten folgenden Code einbinden.
    Ich weiß, wie man einen BGW verwenden (also "call" ...), aber nicht wie ich es an einen bestimmten Code anbinde.

    Hier mein Code
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Application.DoEvents()
    3. Dim pop3 As New POPClient
    4. pop3.Disconnect()
    5. pop3.Connect("pop3.web.de", 110)
    6. pop3.Authenticate("nutzername", "passwort")
    7. ListBox1.Items.Clear()
    8. For i As Integer = 1 To pop3.GetMessageCount
    9. Dim m As MIMEParser.Message = pop3.GetMessage(i, False)
    10. ListBox1.Items.Add("From: " & m.From & " <" & m.FromEmail & "> - " & m.Subject)
    11. If m.MessageBody.Count > 0 Then
    12. Dim Attach As New List(Of MIMEParser.Attachment)
    13. Messages.Add(m.MessageBody(m.MessageBody.Count - 1))
    14. Messages.Add(m.From.ToString)
    15. For ii As Integer = 1 To m.AttachmentCount - 1
    16. Attach.Add(m.GetAttachment(ii))
    17. Next
    18. AttachArray.Add(Attach)
    19. End If
    20. Next
    21. pop3.Disconnect()
    22. End Sub
    23. Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    24. TextBox1.Text = Messages(sender.SelectedIndex)
    25. ListBox2.Items.Clear()
    26. For Each att As MIMEParser.Attachment In AttachArray(sender.SelectedIndex)
    27. ListBox2.Items.Add(att.ContentFileName & " " & att.ContentLength & " Byte")
    28. Next
    29. End Sub
    30. Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged
    31. Dim att As MIMEParser.Attachment = AttachArray(ListBox1.SelectedIndex)(sender.SelectedIndex)
    32. Dim fs As FileStream = File.Create(Application.StartupPath & "/attach/" & att.ContentFileName)
    33. Dim da() As Byte
    34. da = att.DecodedAttachment
    35. fs.Write(da, 0, da.Length)
    36. MsgBox("'" & att.ContentFileName & "' wurde gespeichert!")
    37. fs.Close()
    38. End Sub
    :)
    Hey.

    Ich würde an deiner Stelle lieber einen Thread verwenden.
    Threads kannst du ganz einfach so erstellen:

    VB.NET-Quellcode

    1. ' "DieMethode" ist eine Sub oder Funktion, welche im "Hintergrund" augeführt werden soll
    2. Dim Thrd As New System.Threading.Thread(AddressOf DieMethode)
    3. ' hier wird der Thread gestartet
    4. Thrd.Start()
    Danke, aber ich bekomme einen Fehler bei:

    VB.NET-Quellcode

    1. ListBox1.Items.Clear()
    nämlich: "Ungültiger threadübergreifender Vorgang"

    Ich habe jetzt den ganzen code von button1 in "sub mails" umbenannt und dann bei button1 thrd.star() vorher auch deklariert, aber es klappt halt nicht :)

    Edit by Manschula: (Unnötiges) Vollzitat entfernt

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

    Tutorial zum BackGroundWorker: Multithreading mit BackgroundWorker.

    Dort wird erklärt, wie man Werte zum und vom BGW übergibt.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils