Hallo,
ich habe jetzt schon einige male Versucht mit dem BGW zu arbeiten, allerdings bin ich zu oft auf ein Problem gestoßen.
Ansatz war der Code von Mike69.
Ich habe nun einmal ein kleines Testprogramm gebaut, um mir den BGW nochmal anzuschauen:
Ich lasse einfach nur eine lange Schleife laufen, welche die einzelnen i-Werte zusammenzählt. Also nichts großartiges. Jedoch möchte ich dabei einen ProgressBar ansteuern, welche die % des Vorgangs (Ganzzahlig) anzeigt. Jetzt habe ich allerdings das Problem, dass meine Form dennoch "hängt" und keine Rückmledung gibt. Ich kann mir nur vorstellen, dass die Bar hierbei zu oft aktualisiert wird, so dass sich die Form weghängt. Aber das würde ja dem BGW widersprechen, oder mache ich was falsch? Ich hoffe ihr versteht, was ich für ein Problem habe
Viele Grüße,
Pry
ich habe jetzt schon einige male Versucht mit dem BGW zu arbeiten, allerdings bin ich zu oft auf ein Problem gestoßen.
Ansatz war der Code von Mike69.
Ich habe nun einmal ein kleines Testprogramm gebaut, um mir den BGW nochmal anzuschauen:
VB.NET-Quellcode
- Imports System.ComponentModel
- Public Class Form1
- Public WithEvents bgw As New BackgroundWorker
- Public a As Decimal = 0
- Public pz As Integer 'Prozent
- Public Zahl As Integer = 1000000
- Private Sub bgw_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgw.DoWork
- For i = 0 To Zahl
- a += i
- pz = (i / Zahl) * 100
- If pz Mod 1 = 0 Then
- bgw.ReportProgress(pz)
- End If
- Next
- bgw.ReportProgress(100)
- End Sub
- Private Sub bgw_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bgw.ProgressChanged
- ProgressBar1.Value = e.ProgressPercentage
- 'Label1.Text = a.ToString
- End Sub
- Private Sub bgw_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bgw.RunWorkerCompleted
- PictureBox1.Visible = False
- Label1.Text = a.ToString
- End Sub
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- bgw.WorkerReportsProgress = True
- bgw.WorkerSupportsCancellation = True
- End Sub
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- PictureBox1.Visible = True
- Label1.Text = "Bitte warten..."
- bgw.RunWorkerAsync()
- End Sub
- End Class
Ich lasse einfach nur eine lange Schleife laufen, welche die einzelnen i-Werte zusammenzählt. Also nichts großartiges. Jedoch möchte ich dabei einen ProgressBar ansteuern, welche die % des Vorgangs (Ganzzahlig) anzeigt. Jetzt habe ich allerdings das Problem, dass meine Form dennoch "hängt" und keine Rückmledung gibt. Ich kann mir nur vorstellen, dass die Bar hierbei zu oft aktualisiert wird, so dass sich die Form weghängt. Aber das würde ja dem BGW widersprechen, oder mache ich was falsch? Ich hoffe ihr versteht, was ich für ein Problem habe
Viele Grüße,
Pry
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Pry“ ()