c# -同时增加两个进度条(多线程)

本文关键字:两个 多线程 增加 | 更新日期: 2023-09-27 17:54:23

我只是想让两个进度条在点击按钮时同时增加;我已经创建了两个进度条和一个按钮start与两个线程t1和t2每个包含不同的方法,以增加两个进度条的值(t1为progressbar1和t2分别为progressbar2)。

我有:进度条:progressbar1, progressbar2and Button Button .

代码如下:

    Thread t1, t2;
    private void Progressor1()
    {
        progressBar1.Minimum = 0;
        progressBar1.Maximum = 100;
        for (int i = 0; i <= 100; i++)            
            progressBar1.Value = i;
    }
    private void Progressor2()
    {            
        progressBar2.Minimum = 0;
        progressBar2.Maximum = 100;
        for (int j = 0; j <= 100; j++)            
            progressBar2.Value = j;            
    }
    private void button1_Click(object sender, EventArgs e)  // Start Button
    {
        t1.Start();
        t2.Start();
    }
    private void MultiThreadedcs_Load(object sender, EventArgs e)// Form Load
    {
        t1 = new Thread(Progressor1);
        t2 = new Thread(Progressor2);
    }

运行时显示如下错误:

错误名称= InvalidOperationException错误消息=跨线程操作无效:控制'progressBar2'从创建它的线程以外的线程访问。

请帮我解决这个问题。我对线程概念的了解较少,我已经通过了这个解决方案,但我的问题没有任何进展:

c#线程访问其他线程

c# -同时增加两个进度条(多线程)

在你写的方法中,你直接调用进度条,所以你试图编辑来自另一个(原始)线程的数据。而不是直接编辑进度条的值,你应该Invoke一个方法这样做,像这样:

for (int j = 0; j <= 100; j++)
  this.progressBar1.Invoke((Action) () => this.progressBar1.Value = j, null);