Ausführen einer Methode in BackGroundWorker und Anzeigen von ProgressBar
Was ich möchte, ist, wenn eine Methode eine Aufgabe ausführt. Die Benutzeroberfläche bleibt aktiv und ich möchte den Fortschritt der Arbeit in einer Fortschrittsleiste anzeigen.
Ich habe eine Methode, aBackGroundWorker
und einProgressbar
. Ich möchte die Methode wann aufrufenBackGroundWorker
startet und zeigt den Fortschritt. Die Methode enthält eine Schleife. So kann es den Fortschritt melden.
Was kann also getan werden?
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dataSet1.TBLMARKET' table. You can move, or remove it, as needed.
myBGWorker.WorkerReportsProgress = true;
}
private void myBGWorker_DoWork(object sender, DoWorkEventArgs e)
{
parseFiles();
}
private void myBGWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
myProgressBar.Value = e.ProgressPercentage;
}
private void myBGWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("Done");
}
private void parseButton_Click(object sender, EventArgs e)
{
myBGWorker.RunWorkerAsync();
}
public void parseFiles()
{
for()
{
//parsing
myBGWorker.ReportProgress(...);
}
}
Aber es funktioniert nicht. DasProgressbar
wird nicht aktualisiert. Nur ein kleiner Fortschritt zeigt sich nach demMessageBox
"Erledigt".