我有一个进度条的错误,我不知道如何处理它。
我有一个从 0 到 100 的 for 循环(或循环),只报告他的进度,然后休眠 100 毫秒:
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i <= 100; i++)
{
backgroundWorker.ReportProgress(i);
Thread.Sleep(100);
}
}
在 progresschanged 事件处理方法中,除了一些其他的东西之外,还有两个“if”:
if (matchProgressBar.Value == 50)
{
OnHalfTime(); //listBox1.Add("Halftime!");
}
if (matchProgressBar.Value == 100)
{
OnFullTime(); //listBox1.Add("Full time!");
}
两个“未知”的方法是向 listBox 添加一行。在第一种情况下:“中场休息!”;在第二个中:“全职!”。在这两行之后有相同的“Thread.Sleep(5000);” //你知道,只是因为你需要在中场休息:) //
但问题是 listBox1 已经更新,但 GUI 在进度条更新之前休眠了 5 秒。(所以程序在 49% 和 99% 处停留 5 秒。)
问题:我可以做些什么来解决这个问题吗?