これは以前の私の投稿です:プログレス バーの実行時間が定義よりも短い
すべての答えは、ミリ秒を 100 で割る必要はないということでした。この解決策を試すと、最初に実行したときとは異なり、進行状況バーが遅くなりますが、ミリ秒を 100 で割る必要があると思います。進行状況が実行される合計 100% から各 1% を設定します。たとえば、プログレスバーを10秒間実行したい場合は、10000 / 10ごとに1%(またはタイマーティック)を100ミリ秒で割る必要があるため、100に設定しても高速になります
void bittwist_progBarEventHandler(object sender, EventArgs e)
{
this.Invoke((MethodInvoker)delegate { AnimateProgBar((int)sender); });
}
public void AnimateProgBar(int milliSeconds)
{
if (!timerProgress.Enabled)
{
this.Invoke((MethodInvoker)delegate { pbStatus.Value = 0; });
timerProgress.Interval = milliSeconds / 100;
timerProgress.Enabled = true;
}
}
private void timerProgress_Tick(object sender, EventArgs e)
{
if (pbStatus.Value < 100)
{
pbStatus.Value += 1;
pbStatus.Refresh();
}
else
{
timerProgress.Enabled = false;
}
}
たとえばmilliSeconds == 10000
、進行状況バーは 7 秒間のみ実行されます