How to wait until BackgroundWorker finish all calls

前端 未结 4 679
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-26 10:30

I have Add button click event how add file:

private void btnAddfiles_Click(object sender, EventArgs e)
{
    if (openFileDialog1.ShowDialog() == Sys         


        
4条回答
  •  天命终不由人
    2021-01-26 11:03

    Most easy way is to keep a counter.

    private int numWorkers = 0;
    

    Then increment it as you start each background worker.

    using (stream)
    {
        Interlocked.Increment(ref numWorkers);
        StartBackgroundFileChecker(file);
    }
    

    Assign Same method as event completed to each background worker.

    backgroundWorker.RunWorkerCompleted += myCommonCompletedHandler;
    

    Decrement counter in completed event.

    public void myCommonCompletedHandler(object sender, RunWorkerCompletedEventArgs e)
    {
        if(Interlocked.Decrement(ref numWorkers) == 0) 
        {
          // all complete
        }
    }
    

提交回复
热议问题