У меня есть набор файлов (3000 файлов) в FileInfoCollection.Я хочу обработать все файлы, применяя некоторую логику, которая является независимой (может выполняться параллельно).
FileInfo[] fileInfoCollection = directory.GetFiles();
Parallel.ForEach(fileInfoCollection, ProcessWorkerItem);
Но после обработки около 700 файлов я получаю сообщение об ошибке памяти.Я раньше использовал Thread-pool, но он выдавал ту же ошибку.Если я пытаюсь выполнить без многопоточности (параллельная обработка), он работает нормально.
В «ProcessWorkerItem» я запускаю алгоритм, основанный на строковых данных файла.Кроме того, я использую log4net для ведения журналов, и в этом методе есть много связей с сервером SQL.
Вот некоторая информация, Размер файлов: 1-2 КБ XML-файлы.Я читаю эти файлы, и процесс зависит от содержимого файла.Он идентифицирует некоторые ключевые слова в строке и генерирует другой формат XML.Ключевые слова находятся в базе данных сервера SQL (почти 2000 слов).