可能重复:
从另一个线程更新进度条
在我的计划,我想非GUI功能分离到另一个类,并留在主类GUI相关的东西。 但是,我有更新进度条,而在工人阶级中的工人的方法之一是做了工作的问题。 我知道,我将与多线程在这里工作,但我不明白怎么。 我可能只是缺少简单的事情,但是当我寻找有关它的信息,似乎大多数教程谈细节,但不解释大局很好。 我部分明白调用和委托命令,但我真的不明白他们是如何相互作用的。
下面是剥离下来的是我想要做的版本。 如何修改它来更新进度条,但保留窗口响应和重新粉刷?
主窗体类:
public partial class Form1 : Form
{
time_waster thing = new time_waster();
public Form1()
{
InitializeComponent();
progressBar1.Minimum = 0;
progressBar1.Maximum = 100;
}
private void button1_Click(object sender, EventArgs e)
{
thing.something_that_takes_a_while();
}
}
单独的工作类:类time_waster {公共time_waster(){}
public void something_that_takes_a_while()
{
int delay = 200;
for (int i = 0; i < 100; i++)
{
Thread.Sleep(delay);
//appropriate code to update the progress bar for each iteration of the for loop.
}
}
}