|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.08.2015, 00:51 | #1 |
Пользователь
Регистрация: 10.07.2015
Сообщений: 40
|
Файл занят другим процессом
Вопрос довольно-таки банальный, но я никак не могу его решить. Дело обстоит так: у меня в цикле при первом проходе файл удаляется, другой копируется на его место - всё в порядке. При втором проходе на этапе удаления ошибка занятости файла другим процессом.
Каким образом можно вызвать что-то вроде Dispose после удаления/копирования? |
26.08.2015, 07:44 | #2 | |
Форумчанин
Регистрация: 27.01.2014
Сообщений: 115
|
Цитата:
https://msdn.microsoft.com/ru-ru/lib...v=VS.110).aspx А вообще, у объектов либо есть метод Dispose либо нет. Если нет, вы можете переменной присвоить null, а затем сборщику мусора явно указать, что мусор нужно собрать GC.Collect (как-то так). Но и по тому, что вы написали, не совсем понятно, чем вас перезапись не устраивает? Копируйте с перезаписью существующего файла, если он есть - перезапишется, если нет - создастся новый. Но в целом, ошибка возникает по одной из двух причин - либо вы неправильно завершили копирование файла, как вариант открывали один файл, а затем поток файла писали в новое место и не закрывали этот поток , либо копирование не было завершено по каким-то другим причинам (что маловероятно). |
|
26.08.2015, 13:14 | #3 |
Пользователь
Регистрация: 10.07.2015
Сообщений: 40
|
Вот кусок кода с использованием FileStream:
Код:
|
26.08.2015, 13:23 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А ты проверь - ворду перед этими действиями завершай однозначно. Или просто ее не запускай пока.
I'm learning to live...
|
26.08.2015, 13:27 | #5 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Дык ошибка при открытии того файла, который в ворде открыт был?
Ну может и правда после Quit еще какое-то время не отпущен файл. Попробуйте Thread.Sleep несколько секунд, если после этого работает, то можно сделать какой-нибудь цикл пока не получится записать (может быть с каким-нибудь ограничением по времени или кол-ву попыток).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
26.08.2015, 13:48 | #6 | |
Пользователь
Регистрация: 10.07.2015
Сообщений: 40
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Определить каким процессом занят файл | SibBear | Win Api | 4 | 24.01.2020 01:50 |
Занят другим процессом | _ZixeL_ | Общие вопросы Delphi | 1 | 04.11.2012 22:59 |
Этот файл занят другим процессом | alkador | Общие вопросы Delphi | 5 | 26.06.2012 21:27 |
Как скопировать файл, который занят другим приложением? | Greek9000 | Общие вопросы Delphi | 3 | 09.02.2011 11:28 |
Файл занят другим процессом | Adonidi | Общие вопросы Delphi | 4 | 25.03.2010 21:38 |