Результат возведения в степень появляется быстрее заполнения ProgressBar
Код:
private long Pow(long number, int power) {
var result = 1L;
progressBar1.Maximum = power;
if (power == 0)
{
progressBar1.Maximum = 1;
progressBar1.Value = 1;
}
else
{
progressBar1.Value = 0;
while (power > 0)
{
if ((power & 1) == 0)
{
number *= number;
power >>= 1;
progressBar1.Value = progressBar1.Value + power;
}
else
{
result *= number;
--power;
++progressBar1.Value;
}
}
}
return result;
}
private void numericUpDown2_ValueChanged(object sender, EventArgs e)
{
label3.Text = Pow((long)numericUpDown1.Value, (int)numericUpDown2.Value).ToString();
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
label3.Text = Pow((long)numericUpDown1.Value, (int)numericUpDown2.Value).ToString();
}
}
}