Computechsoft Ответов: 1

Не может быть выполнено для файла с открытым пользовательским разделом


Запрошенная операция не может быть выполнена с файлом, в котором открыт сопоставленный пользователю раздел
Ошибка в этой строке
System.IO.File.Copy(tempPath, filePath, True)

Что я уже пробовал:

Если pdfStamper-это не Ничто, то pdfStamper.Закрывать()
Если pdfReader-это не Ничто, то pdfReader.Закрывать()
System.IO.File.Copy(tempPath, filePath, True)
System.IO.File.Удалить(tempPath)
Конец, если

1 Ответов

Рейтинг:
7

OriginalGriff

Сообщение об ошибке довольно явное:

The requested operation cannot be performed on a file with a user-mapped section open
Файл открыт, вероятно, в другом месте вашего собственного приложения - и не может быть открыт внешним процессом для копирования файла, пока он не будет закрыт.

Проверьте весь ваш другой код и убедитесь, что вы не поддерживаете никакого доступа к файлу. Это включает в себя все элементы управления изображением, загруженные из файла, и так далее.
В качестве хорошей практики используйте Using блокируйте любые потоки и т. д. по всему вашему коду, чтобы убедиться, что файл правильно закрыт и соответствующие структуры удалены, когда вы закончите с ними.


Computechsoft

Если я перезапускаю свою систему, когда снова запускаю свой проект в первый раз, он работает отлично
второй раз приходит эта ошибка.

phil.o

Это означает, что в вашем коде есть недостаток, который оставляет файловый поток открытым, когда он должен избавиться от него. Убедитесь, что вы объявили все потоки с помощью using блоки, как и предлагалось в решении, и у вас все будет хорошо.

Computechsoft

PdfReader был установлен в моей системе? теперь этот документ открывается в "Microsoft Edge"
поэтому эта ошибка показывающая теперь скажите мне что я применяю это
Kill("Microsoft Edge.lnk")
но не убивай (края Микросфта)

OriginalGriff

Вам придется убить процесс, а не связь. Но... Это не сработало бы в моей системе, потому что моя открывает PDF-файлы с помощью Corel PDF Fusion. И даже если бы я использовал Edge для открытия PDF-файлов, вы закрываете мой браузер по своей прихоти, и я собираюсь удалить ваше программное обеспечение с крайним предубеждением!

Вместо того чтобы пытаться "обойти" проблему, используйте Try...Поймайте, чтобы "забрать" ошибку, сообщите о ней своему пользователю и дайте ему возможность закрыть просмотр вручную и повторить попытку.

Computechsoft

Да, я закрыл вручную "Microsoft Edge" без ошибок идеальной работы.
Только мне придется закрыть "Microsoft Edge" прагматично ?
но длина ребер = 0

Тусклые Края() Как Процесс = Процесс.GetProcessesByName("Microsoft Edge")

Для Каждого Процесса Как Процесс В Ребрах
Процесс.Убивать()
Следующий

OriginalGriff

Серьезно, я бы не стал этого делать.
Вы будете чертовски раздражать пользователей, если закроете неправильные окна - особенно если они находятся на 5-м часе 5 - часовой 1-минутной загрузки ...

Никогда не думайте, что вы знаете лучше, чем ваши пользователи - они не будут любить вас за это.