4

我计划在 DataTable 上使用 Parallel.ForEach,以便可以将每条记录写入文件。

我们如何通知用户已处理记录的百分比/数量。

通常,当我们使用后台工作者时,我们会有一个 ProgressChanged 事件,在该事件中通知用户已完成工作的百分比。我们如何使用 Parallel.ForEach 或 Multiple 任务来实现这一点?

谢谢,兔子

4

2 回答 2

2

我有一个类似的问题。我们解决这个问题的方法是使用Interlocked.Increment一个对所有线程和 UI 可见的数字,并以此为基础显示进度条。

编辑:请注意,如果您的计数器是 a long,您将需要使用Interlocked.Read它来阅读它。如果您使用的是 int,则该过程已经是原子的。

于 2011-02-01T22:47:15.320 回答
2

您将需要一个从 0 开始的(共享)计数器,并在每个部分的末尾递增(使用互锁)。

然后你需要

  1. 触发一个事件,该事件必须使用Invoke(或Dispatch)
  2. 或让定时器定期对计数器进行采样

当迭代次数很大时,选项 2) 更容易且效率更高。

于 2011-02-01T22:51:48.630 回答