我想显示在外部库中执行的计算进度。
例如,如果我有一些计算方法,并且想在Form类中将其用于100000个值,我可以编写:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Caluculate(int i)
{
double pow = Math.Pow(i, i);
}
private void button1_Click(object sender, EventArgs e)
{
progressBar1.Maximum = 100000;
progressBar1.Step = 1;
for(int j = 0; j < 100000; j++)
{
Caluculate(j);
progressBar1.PerformStep();
}
}
}
我应该在每次计算之后执行步骤。但是,如果我在外部方法中执行所有100000计算,该怎么办?如果不想让此方法依赖进度条,什么时候应该“执行步骤”?例如,我可以写
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void CaluculateAll(System.Windows.Forms.ProgressBar progressBar)
{
progressBar.Maximum = 100000;
progressBar.Step = 1;
for(int j = 0; j < 100000; j++)
{
double pow = Math.Pow(j, j); //Calculation
progressBar.PerformStep();
}
}
private void button1_Click(object sender, EventArgs e)
{
CaluculateAll(progressBar1);
}
}
但我不想那样做。
4
将委托对象传递给方法。
—
汉斯·帕桑