定时器间隔和progressBar步骤之间应该有什么关系?

时间:2014-07-15 17:57:36

标签: c# .net winforms

我在form1中有一个方法,我使用progressBar:

counter += 1;
int position = (int)Math.Round((counter / updateTime) * 100);
xpProgressBar1.Text = position.ToString() + " %";
xpProgressBar1.Position = position;
if (counter == 10)
{
  counter = 0;
}

新课程中的计时器:

public static void Start(Form1 form)
        {
            frm1 = form;
            _timer.Elapsed += _timer_Elapsed;
            _timer1.Elapsed += _timer1_Elapsed;
            _timer.Interval = 1000;
            _timer1.Interval = 1000;
            count = 5;
            LoadOldHtmlFiles();
            frm1.CombindedStringFix();
            _timer.Start();
            _timer1.Start();
        }

如果我将_timer间隔设置为10000并且将_timer1间隔设置为1000并且进度条每次移动10%并且在10秒后达到100%。

但现在我希望一切都变得更快,所以我将_timer间隔从10000改为1000。 我现在应该在progressBar代码中更改什么,以便它每秒跳转到100%? (如果我没有错,这是逻辑,如果我将定时器间隔更改为1000,所以progressBar应该每秒跳到100%)。

counter += 1;
            int position = (int)Math.Round((counter / updateTime) * 100);
            xpProgressBar1.Text = position.ToString() + " %";
            xpProgressBar1.Position = position;
            if (counter == 10)
            {
                counter = 0;
            }

我应该将计数器== 10更改为?我是否应该改变一些内容:

int position = (int)Math.Round((counter / updateTime) * 100);

2 个答案:

答案 0 :(得分:0)

你应该将_timer间隔设置为1000并将_timer1间隔设置为100

答案 1 :(得分:0)

更好的方法是使用BackgroundWorker。见How to: Use a Background WorkerBackgroundWorker在另一个线程中完成其工作,并使UI响应。它还有一种向UI线程报告进度的机制。您可以在没有任何特殊多线程知识的情况下使用它。