What I want, when some method performs some task, the user interface remains active, and I want to show the progress in the progress bar.
I have a method a BackGroundWorker and a Progressbar . I want to call the method when BackGroundWorker starts working and shows the progress. The method contains a loop. In this way, he can report on progress.
So what can be done?
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(...); } }
But it does not work. Progressbar not updated. After the MessageBox "Finish" a little progress is shown.
soham.m17
source share