可能重复:
从另一个线程更新进度条
在我的程序中,我想将非 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();
}
}
单独的工人阶级:class time_waster { public 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.
}
}
}