首页 > 解决方案 > 如何在 C# 中控制并行 For 循环的 FileWrite?

问题描述

我有一个在循环中从外部函数调用的方法。此方法在每次调用时生成一个列表并写入文件。伪代码如下

Public Class MyClass
{

OuterMethod()
{
For(//n number of iteration){Call InnerMethod())}
}

InnerMethod()
{
var a = new List<Data>
for(//x number of iteration){
a.Add(data);
}
WriteToFile(a);

}

现在我想限制 WriteToFile 调用。我想分批做(比如500个和可配置的)。在这种情况下,我可以在类级别声明列表,并在写入之前在 innetrmethod 和 checkforcount 中传递批次计数,然后清除列表以从 InnerMethod() 调用的下一次迭代中重新生成批次。当循环是顺序的时,这解决了我的问题。

现在,假设 InnerMethod() 被称为 ParallelFor 循环。在这种情况下,我将无法控制可以进行计数检查并一次重置列表的线程。

请提出一种方法,以便无论 InnerMethod() 是通过顺序 for 还是 parallelFor 调用,我都可以将这个文件写入批处理。

标签: c#.netmultithreadingthread-safetytask-parallel-library

解决方案


推荐阅读