Uruchamianie metody w BackGroundWorker i Pokazywanie ProgressBar
Chcę, aby jakaś metoda wykonała jakieś zadanie. Interfejs użytkownika zachowuje swoją aktywność i chcę pokazać postęp pracy w pasku postępu.
Mam metodę, aBackGroundWorker
i aProgressbar
. Chcę wywołać metodę kiedyBackGroundWorker
zaczyna biec i pokazuje postęp. Metoda zawiera pętlę. Może więc zgłosić postęp.
Więc co można zrobić?
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(...);
}
}
Ale to nie działa. TheProgressbar
nie aktualizuje się. Tylko niewielki postęp jest widoczny poMessageBox
"Gotowe".