我有一些进程按顺序迭代一组大文件,并从中提取信息以写入\更新我们的数据库。这些文件通常每行有几千行,所以我构建了一个Parallel.ForEach来同时处理给定文件中的多行(由于需要按顺序应用每个文件,一次只处理一个文件)。现在我需要知道大约当前文件的处理量,以便我可以向管理层提供剩余运行时间的指示。到目前为止,我有以下
{{1}}
我根本不关心哪些线路已经处理过,只关心总共有多少线路,以便能够回答当前文件中有多远的问题。这会给我带来我可靠的东西吗?
答案 0 :(得分:4)
Interlocked.Increment将安全地增加您的计数器作为原子操作。
但是,如果您想要计算行 的行数,则需要在行处理之后递增它,而不是之前:
double percentage = (double)cntr / lines.Count * 100
如果您想要百分比,请将总计数完成的计数除以,然后乘以100:
{{1}}