【发布时间】:2014-04-30 19:28:42
【问题描述】:
我有一个 BackgroundWorker 从外部来源检索数据。
然后我的BackgroundWorker 处理数据并使用修改后的数据更新原始源。
我从我的BackgroundWorker 报告回来以填写已处理的DataGridView 等。
如果它运行良好且缓慢,那么我的 UI 将被释放到足以让我在出现问题时使用取消按钮,但如果它运行得很快(如果其处理的数据很少),那么 UI 会一直忙于向其中添加行DataGridView 我无法及时使用取消按钮
所以...我的问题是什么是正确的方法来不断更新DataGridView 同时仍然保留一些 UI 控制来按下取消但又不会进一步减慢进程。
【问题讨论】:
-
DGV 更新必须在 UI 线程上进行,所以我只能建议不要频繁更新 DGV。也许只有每 500 毫秒。
-
好的,但是如果我添加行并对行进行着色以适应最新情况,我该如何在不更新 ui 的情况下做到这一点?我会更新另一个未显示的 dgv,然后每 500 毫秒将其传递给我有 UI 表单的那个吗?
-
不,这将是一种迂回的做法。我发布了一个答案来解释我的意思。
标签: c# datagridview backgroundworker