如何获得Parallel.ForEach完成的百分比

时间:2017-01-19 14:34:19

标签: c# multithreading parallel.foreach

我有一些进程按顺序迭代一组大文件,并从中提取信息以写入\更新我们的数据库。这些文件通常每行有几千行,所以我构建了一个Parallel.ForEach来同时处理给定文件中的多行(由于需要按顺序应用每个文件,一次只处理一个文件)。现在我需要知道大约当前文件的处理量,以便我可以向管理层提供剩余运行时间的指示。到目前为止,我有以下

{{1}}

我根本不关心哪些线路已经处理过,只关心总共有多少线路,以便能够回答当前文件中有多远的问题。这会给我带来我可靠的东西吗?

1 个答案:

答案 0 :(得分:4)

Interlocked.Increment将安全地增加您的计数器作为原子操作。

但是,如果您想要计算 的行数,则需要在行处理之后递增它,而不是之前:

double percentage = (double)cntr / lines.Count * 100

如果您想要百分比,请将总计数完成的计数除以,然后乘以100:

{{1}}