【发布时间】:2013-02-27 22:53:20
【问题描述】:
我正在更新 backgroundworker progressChanged 事件上的标签文本(字面意思是此事件回调中的 1 行代码)。
它在大约 45 秒内更新了大约 50 次,问题是 UI 似乎只更新了大约 10 次。因此,UI 似乎没有“跟上”事件的数量。
有没有办法帮助改善这一点。我看到人们建议 APplication.DoEvents() 但一直认为这有点狡猾。
void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
lblProgress.Text = "Updating Progress: " + e.ProgressPercentage;
}
这里有推荐的做法,所以我可以看到 UI 上的每个更新?
【问题讨论】:
-
试过 lblProgress.Invalidate()?
-
我对 worker 不熟悉,但如果它不在 UI 线程中运行,它会抛出异常。您是否尝试过使用 Invoke 或 BeginInvoke 在 UI 线程上运行?
-
我一直在工作线程中更新我的进度条/标签,并且只使用了一个方法调用程序,由表单调用以确保线程安全,可能值得尝试
标签: c# winforms backgroundworker