アプリケーションを並列化する必要があります。このアプリケーションはファイルを処理する必要があり、タスクを使用し、各スレッドは1行のデータを処理しています(以前は1行ずつ順番に処理していました)。問題は、データプロバイダーが何らかのキャッシュを使用し、プロセス中にファイルに複数回アクセスすることです。そのため、1つのデータプロバイダーを使用することは、スレッドセーフにするための大変な作業でした。代わりに、毎回新しいデータプロバイダーで作成しました。スレッドが行を処理しています。最初の数回の実行では正常に機能しますが、しばらくすると、ファイルへのアクセスに使用されるCOMオブジェクトが次のエラーをスローし始めます。
COMExceptionが発生しました:ErrorCode = -2147287036
「2147287036」を確認したところ、「別のファイルを開くのに十分なリソースがありません」のエラーコードです。データプロバイダー/COMオブジェクトのclose/disposeを呼び出していると確信しているので、ファイルにアクセスできない理由を理解するのに苦労しています(書き込みでファイルを開こうとする例外処理ロジックがあります)モードであり、失敗した場合は読み取りモードで開こうとし、失敗した場合は基本的に上記の例外をスローします。
私の最初の手がかりは、COMオブジェクトがファイルハンドルをすぐに解放しないことです。しかし、それでもそれはあまり意味がありません。