我有一个任务需要逐行读取一个大文件,进行一些逻辑处理,并返回一个字符串,我需要将其写入一个文件中。输出的顺序并不重要。然而,当我尝试使用下面的代码时,在读取我的文件的15-20k行后,它会变得非常慢或停止。
public static Object FileLock = new Object();
...
Parallel.ForEach(System.IO.File.ReadLines(inputFile), (line, _, lineNumber) =>
{
var output = MyComplexMethodReturnsAString(line);
lock (FileLock)
{
using (var file = System.IO.File.AppendText(outputFile))
{
file.WriteLine(output);
}
}
});
为什么我的程序运行一段时间后变慢了?有没有更正确的方法来执行这个任务?