0

我正在更新 backgroundworker progressChanged 事件上的标签文本(字面意思是此事件回调中的 1 行代码)。

它在大约 45 秒内更新了大约 50 次,问题是 UI 似乎只更新了大约 10 次。因此,UI 似乎没有“跟上”事件的数量。

无论如何,有没有帮助改善这一点。我看到人们建议 APplication.DoEvents() 但一直认为这有点狡猾。

void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
      lblProgress.Text = "Updating Progress: " +  e.ProgressPercentage;
}

这里有推荐的做法,所以我可以看到 UI 上的每一个更新?

4

2 回答 2

2

尝试调用:

this.lblProgress.Refresh();

设置文本属性后

于 2013-02-27T14:53:20.580 回答
0

我以前只发生过一次,当时我发现最好的方法就是调用更新:

void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
      lblProgress.Text = "Updating Progress: " +  e.ProgressPercentage;
      lblProgress.Update();
}

根据标签文本的重要性,您可以调用Refresh()更直接的重绘。

于 2013-02-27T14:53:02.127 回答