0

これは以前の私の投稿です:プログレス バーの実行時間が定義よりも短い

すべての答えは、ミリ秒を 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 秒間のみ実行されます

4

0 に答える 0