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#线程访问其他线程
在你写的方法中,你直接调用进度条,所以你试图编辑来自另一个(原始)线程的数据。而不是直接编辑进度条的值,你应该Invoke
一个方法这样做,像这样:
for (int j = 0; j <= 100; j++)
this.progressBar1.Invoke((Action) () => this.progressBar1.Value = j, null);