Я должен распараллелить приложение;Это приложение должно обрабатывать файл, я использовал tasks , и каждый поток обрабатывает одну строку данных (ранее она использовалась для последовательной обработки строк одна за другой).Проблема заключается в том, что поставщик данных использует своего рода кэширование , а также он обращается к файлу несколько раз во время процесса, поэтому использование одного поставщика данных было сложной задачей, чтобы сделать его поточно-поточным.безопасно, вместо этого я создал новый поставщик данных каждый раз, когда поток обрабатывает строку.Он отлично работает для первых нескольких запусков, но через некоторое время COM-объект, который используется для доступа к файлу, начинает выдавать следующую ошибку:
Произошло исключение COMEx : ErrorCode =-2147287036
Когда я проверил, "2147287036" - это код ошибки для "недостаточно ресурсов для открытия другого файла" .Я уверен, что я вызываю close / dispose для провайдеров данных / COM-объектов, поэтому мне трудно понять, почему я не могу получить доступ к файлу (у меня есть логика обработки исключений, которая пытается открыть файл в режим записи и, если он неуспешен, он пытается открыть его в режиме чтения , и снова, если он неуспешен, он выдает исключение, которое в основном является упомянутым выше).
Моя первая подсказка заключается в том, что COM-объект не освобождает дескриптор файла мгновенно.Но все же это не имеет особого смысла.