Как долго файл может быть заблокирован в Windows после закрытия программы? - PullRequest
4 голосов
/ 26 марта 2010

В нескольких скриптах, которые я использую, у меня проблема с перебоями.
Иногда при попытке удалить файл происходит сбой скриптаСогласно журналу ошибок из-за доступа к файлу другим процессом.Я предполагаю, что окна не успели выпустить файл после завершения предыдущей операции над файлом.

Какой промежуток времени был бы хорошим предположением, после которого окна должны были успеть снова выпустить файл?

Ответы [ 2 ]

2 голосов
/ 26 марта 2010

Если приложение Windows работает с файлом, оно должно быть немедленно закрыто, потому что, по-видимому, они закрыли свои файловые дескрипторы. Нет задержки во времени, чтобы разблокировать файл после операции закрытия файла.

Если программа забывает закрыть свои файловые дескрипторы, но закрывается, Windows освободит ее для них (только не сразу). Обычно это не долго, но это может быть любое количество времени, я не видел, чтобы это заняло больше пары секунд. Но должна быть сделана правильная очистка, чтобы избежать блокировки.

Стоит также отметить, что не все программы открывают файлы заблокированным способом. Они могут открыть файл, указав, какой тип доступа они хотели бы предоставить другим процессам, и они также могут заблокировать части файла. Они могут открыть файл с полными правами на чтение / запись для других процессов.

Если у вас нет контроля над процессом, который не закрывает свои файловые дескрипторы, но вам нужно его выполнить, вы можете написать какой-то цикл, чтобы продолжить попытки файла в течение нескольких секунд.

0 голосов
/ 26 марта 2010

Как написал другой пользователь, это должно быть сделано немедленно, если файл был закрыт корректно - с неопределенной задержкой, пока ОС не разберут его ...

Всегда, всегда правильно распоряжайтесь ресурсами.

...