我在 FileInfoCollection 中有一个文件集合(3000 个文件)。我想通过应用一些独立的逻辑(可以并行执行)来处理所有文件。
FileInfo[] fileInfoCollection = directory.GetFiles();
Parallel.ForEach(fileInfoCollection, ProcessWorkerItem);
但是在处理了大约 700 个文件后,我遇到了内存不足的错误。我之前使用过线程池,但它给出了同样的错误。如果我尝试在没有线程(并行处理)的情况下执行,它工作正常。
在“ProcessWorkerItem”中,我正在运行基于文件字符串数据的算法。此外,我使用 log4net 进行日志记录,并且在这种方法中与 SQL 服务器有很多通信。
以下是一些信息,文件大小:1-2 KB XML 文件。我阅读了这些文件,该过程取决于文件的内容。它正在识别字符串中的一些关键字并生成另一种 XML 格式。关键字在 SQL 服务器数据库中(近 2000 个字)。