Running a method in BackGroundWorker and Showing ProgressBar

前端 未结 3 1571
南笙
南笙 2020-11-27 20:44

What I want is when some method is doing some task UI keeps itself active and I want to show the progress of the work in a progress-bar.

I have a method, a Bac

相关标签:
3条回答
  • 2020-11-27 20:53

    Instead of using one ParseFiles method (which should depend on myBGWorker) use loop and method which parse one file. Report progress percentage in that loop:

    private void parseButton_Click(object sender, EventArgs e)
    {
        parseButton.Enabled = false;
        myBGWorker.RunWorkerAsync();
    }
    
    private void myBGWorker_DoWork(object sender, DoWorkEventArgs e)
    {
       for(int i = 0; i < filesCount; i++)
       {  
           ParseSingleFile(); // pass filename here
           int percentage = (i + 1) * 100 / filesCount;
           myBGWorker.ReportProgress(percentage);
       }
    }
    
    void myBGWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        myProgressBar.Value = e.ProgressPercentage;
    }
    
    void myBGWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        parseButton.Enabled = true;
        MessageBox.Show("Done");
    }
    
    0 讨论(0)
  • 2020-11-27 20:59

    To. soham.m17 using with sender argument

    private void myBGWorker_DoWork(object sender, DoWorkEventArgs e)
    {
       var worker = sender as BackgroundWorker;
       for(int i = 0; i < filesCount; i++)
       {  
           ParseSingleFile(); // pass filename here
           int percentage = (i + 1) * 100 / filesCount;
           worker.ReportProgress(percentage);  // use not myBGWorker but worker from sender
       }
    }
    
    0 讨论(0)
  • 2020-11-27 21:02

    I am sorry about the question. Actually the code works fine. It was not showing the Progressbar as the argument in myBGWorker.ReportProgress() was fraction and not percentage. So, it was not showing it. Sorry for the inconvenience.

    Moderator may delete this thread. Otherwise it can be a tutorial for others.

    0 讨论(0)
提交回复
热议问题