我正在更新backgroundworker progressChanged事件上的标签文本(在此事件回调中只有一行代码)。
它在大约45秒内更新约50次,问题是UI似乎只更新了大约10次。因此,UI似乎没有“跟上”事件的数量。
无论如何都有助于改善这一点。我看到人们建议APplication.DoEvents()但总是认为这有点狡猾。
void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
lblProgress.Text = "Updating Progress: " + e.ProgressPercentage;
}
这里有推荐的做法,所以我看到UI上的每个更新?
答案 0 :(得分:2)
尝试致电:
this.lblProgress.Refresh();
设置Text-Property 后
答案 1 :(得分:0)
我之前只发生过这种情况,当时我发现的最佳方法就是调用更新:
void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
lblProgress.Text = "Updating Progress: " + e.ProgressPercentage;
lblProgress.Update();
}
根据标签文字的重要程度,您可以调用Refresh()
代替更快的重绘。