У меня есть многопоточное приложение С#, которое создает файлы, открывает их для обработки, а затем удаляет их после завершения. Это приложение может ожидать от 1 до 100 файлов для обработки. В некоторой степени случайным образом (скорее всего, связано с многопоточным характером приложения), я получаю нарушение доступа, когда пытаюсь удалить файл после обработки. Моя кишка говорит, ну, Вик, ты не закрыл/не удалил файл, прежде чем пытаться его удалить. И я пошел бы с моей кишкой, если бы это произошло для каждого файла, но это не так. Итак, я пытаюсь выяснить, где я делаю ошибку. У кого-нибудь есть какие-либо указания относительно того, как отлаживать этот тип исключения? Мне бы очень хотелось увидеть трассировку стека в файле, если это имеет смысл.
Я попытаюсь показать псевдокод, однако мой вопрос связан с тем, как отлаживать этот тип исключения:
События приложения:
Начало работы + = Создать новый процессор.
Файл переноса + = Processor.ProcessFile и Добавить новый объект Document в коллекцию документов процессора (как путь, а не файл)
Операция завершена + = Processor.Aggregate files, создайте новый файл, содержащий содержимое файлов. Когда этот метод будет завершен, он вызовет ProcessorFinished.
События процессора:
Обработанный процессор + = Application_CleanUpProcessor. В этом методе я распоряжаюсь процессором, который, в свою очередь, удаляет объект документа, который удаляет файл.