FileInfoCollectionにファイルコレクション(3000ファイル)があります。独立した(並列で実行できる)ロジックを適用して、すべてのファイルを処理したいと思います。
FileInfo[] fileInfoCollection = directory.GetFiles();
Parallel.ForEach(fileInfoCollection, ProcessWorkerItem);
しかし、約700個のファイルを処理した後、メモリ不足エラーが発生します。以前にスレッドプールを使用しましたが、同じエラーが発生していました。スレッド化(並列処理)せずに実行しようとすると、正常に動作します。
「ProcessWorkerItem」では、ファイルの文字列データに基づいてアルゴリズムを実行しています。さらに、ロギングにlog4netを使用しており、この方法ではSQLサーバーとの通信が多くなります。
ここにいくつかの情報があります、ファイルサイズ:1〜2KBのXMLファイル。私はそれらのファイルを読みました、そして、プロセスはファイルの内容に依存しています。文字列内のいくつかのキーワードを識別し、別のXML形式を生成しています。キーワードはSQLサーバーデータベースにあります(約2000語)。