Задать вопрос
@EGGOFFOX

Почему progressBar медленный?

Результат возведения в степень появляется быстрее заполнения 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();
        }
    }
}
  • Вопрос задан
  • 214 просмотров
Подписаться 1 Простой Комментировать
Ответ пользователя Developer К ответам на вопрос (3)
samodum
@samodum
Какой вопрос - такой и ответ
Потому что многопоточности нет. И неправильная работа с UI. UI не обновляется моментально, учи матчасть как это работает.
Ответ написан
Комментировать