Update progress bar in another form while task is running

前端 未结 3 809
盖世英雄少女心
盖世英雄少女心 2021-02-02 04:41

**Ultimately I am going to have four tasks running concurrently and have another form that contains four progress bars. I would like for each progress bar to update as it\'s wo

3条回答
  •  别那么骄傲
    2021-02-02 05:11

    Create your progress bar form on the main UI thread of the parent form, then call the Show() method on the object in your button click event.

    Here's an example with 2 bars:

    //In parent form ...
    private MyProgressBarForm progressBarForm = new MyProgressBarForm();
    
    private void button1_Click(object sender, EventArgs e)
    {
        progressBarForm.Show();
        Task task = new Task(RunComparisons);
        task.Start();
    }
    
    private void RunComparisons()
    {
        for (int i = 1; i < 100; i++)
        {
            System.Threading.Thread.Sleep(50);
            progressBarForm.UpdateProgressBar(1, i);
        }
    }
    
    //In MyProgressBarForm ...
    public void UpdateProgressBar(int index, int value)
    {
        this.Invoke((MethodInvoker) delegate{
            if (index == 1)
            {
                progressBar1.Value = value;
            }
            else
            {
                progressBar2.Value = value;
            }
        });
    }
    

提交回复
热议问题