12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
|
|
1 | |
Как дождаться закрытия файла?09.09.2016, 19:55. Показов 1986. Ответов 9
Метки нет (Все метки)
Допустим открываем файл, а потом закрываем file.close(); Или открываем для чтения ресурсов и закрываем FreeLibrary(hModule); Так вот На выполнение file.close(); или FreeLibrary(hModule); уходит какое то время, может даже десяток секунд. То есть файл не закрывается мгновенно. Если к примеру файл закрыть и тут же попробовать его удалить , то может произойти ошибка, так как фактически он закроется через несколько секунд. Можно конечно после file.close(); поставить Sleep();, но это какое то корявое решение. Как приостановить работу программы до фактического завершения, file.close();?
0
|
09.09.2016, 19:55 | |
Ответы с готовыми решениями:
9
Как дождаться закрытия файла другим процессом/потоком Отслеживание закрытия файла процессом, запущенным через CreateProcess Функция ShellExecute, как дождаться окончания запускаемого приложения? Дождаться закрытия диалога |
4 / 4 / 5
Регистрация: 19.08.2016
Сообщений: 137
|
|
09.09.2016, 20:24 | 2 |
Всегда пользовался CloseHandle(hFile) и закрывалось мгновенно, ничего ждать не приходилось, даже сразу удалял. А так попробуй WaitForSingleObject().
0
|
11 / 11 / 9
Регистрация: 04.09.2016
Сообщений: 41
|
|
09.09.2016, 21:31 | 3 |
ну раз не мгновенно, то придется тебе подождать. пока функция не закончит свою работу, управление не перейдет следующей инструкции. а пока дескриптор не закроется, файл удалить невозможно.
счетчик ссылок
0
|
0 / 0 / 1
Регистрация: 07.09.2016
Сообщений: 3
|
|
10.09.2016, 09:19 | 4 |
Найти причину, почему он не закрывается сразу, наверное открыли его с флагом "Не Удалять" и сами же удаляете, ну или что-то в этом роде.
Может дело и не в файле а в чем-то другом, например дебагер качает символы с сервера а кажется что тормозит код.
0
|
Ушел с форума
|
|
10.09.2016, 09:28 | 5 |
Я в таких ситуациях поступаю следующим образом: делаю DeleteFile в цикле с
маленькой задержкой. Если и после этого DeleteFile отказывает с соответствующим кодом, тогда вызываю MoveFileEx с MOVEFILE_DELAY_UNTIL_REBOOT и перехожу к другим делам. А ОС и правда иногда "держит" файл некоторое время, пусть и небольшое.
0
|
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
10.09.2016, 11:51 | 6 |
0
|
Ушел с форума
|
|
10.09.2016, 19:39 | 7 |
Точно. Я такое поведение наблюдал много раз, в том числе и на
совершенно чистых тестовых системах, где кроме Windows ничего нет. Задержка может быть очень маленькой, но она существует. Файл после возврата из CloseHandle отпускается не сразу, поэтому DeleteFile может и не сработать.
0
|
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
|
|
12.09.2016, 21:06 [ТС] | 8 |
0
|
Ушел с форума
|
|
13.09.2016, 08:09 | 9 |
Нет, нельзя.
1
|
12 / 11 / 2
Регистрация: 03.04.2016
Сообщений: 502
|
|
15.09.2016, 22:41 [ТС] | 10 |
Somebody, Могу сказать что антивирус тоже может внести свою печальную лепту..
Моя программа прекрасно работала, но на компьютере клиента иногда выскакивала ошибка доступа после перемещения файла и затем попытке открыть его. Я перелопатил весь код что только не делал. В итоге оказалось что у него установлен 360 total security, после замены его на Kaspersky, все заработало...
0
|
15.09.2016, 22:41 | |
15.09.2016, 22:41 | |
Помогаю со студенческими работами здесь
10
Как дождаться загрузки XML файла Как дождаться появления определённого файла? Как дождаться открытия exe-файла и выйти из excel? Как добавить в заголовок tabpages значок закрытия файла? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |