我计划在 DataTable 上使用 Parallel.ForEach,以便可以将每条记录写入文件。
我们如何通知用户已处理记录的百分比/数量。
通常,当我们使用后台工作者时,我们会有一个 ProgressChanged 事件,在该事件中通知用户已完成工作的百分比。我们如何使用 Parallel.ForEach 或 Multiple 任务来实现这一点?
谢谢,兔子
我计划在 DataTable 上使用 Parallel.ForEach,以便可以将每条记录写入文件。
我们如何通知用户已处理记录的百分比/数量。
通常,当我们使用后台工作者时,我们会有一个 ProgressChanged 事件,在该事件中通知用户已完成工作的百分比。我们如何使用 Parallel.ForEach 或 Multiple 任务来实现这一点?
谢谢,兔子
我有一个类似的问题。我们解决这个问题的方法是使用Interlocked.Increment
一个对所有线程和 UI 可见的数字,并以此为基础显示进度条。
编辑:请注意,如果您的计数器是 a long
,您将需要使用Interlocked.Read
它来阅读它。如果您使用的是 int,则该过程已经是原子的。
您将需要一个从 0 开始的(共享)计数器,并在每个部分的末尾递增(使用互锁)。
然后你需要
当迭代次数很大时,选项 2) 更容易且效率更高。