Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
SeregaBarmaley
23 / 23 / 8
Регистрация: 01.10.2012
Сообщений: 204
#1

Программно узнать занят ли файл каким либо процессом

09.04.2015, 10:43. Просмотров 1582. Ответов 15
Метки нет (Все метки)

Как программно узнать занят ли файл каким либо процессом?
И как зациклить программу, чтобы она проверяла занятость файла процессом, и как только процесс отпускает файл то выполнялось бы условие.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2015, 10:43
Ответы с готовыми решениями:

Файл занят другим процессом. Можно ли узнать, когда он станет доступен?
Доброго времени суток! В моем приложении нужно удалить файл (приложением...

Как удалить файл, который занят другим процессом
Не могу удалить текстовой файл. Команда выглядит вот так ...

Как избежать ошибки файл занят другим процессом
Допустим, есть программа, которая открывает файл. На форме есть поле для...

Процесс не может получить доступ к файлу, т.к файл занят другим процессом
Процесс не может получить доступ к файлу, т.к файл занят другим процессом Как...

Редактирование загруженного файла в Image: ошибка - файл занят другим процессом
Загружаю все файлы jpg из выбранной папки для отображения в Image Dim LB as...

15
Fakels
19 / 19 / 4
Регистрация: 07.03.2015
Сообщений: 258
09.04.2015, 15:19 #2
я проверял топорно.
суть такова.
...
vb.net
1
2
3
4
5
on error goto loop 
loop:
DoEvents
open file 
on error goto 0
...

но программа зависнет если сторонний процесс не отпустит файл, так что тут надо проверку ставить с возможностью юзера прервать проверку.
Можно еще по таймеру реализовать.
0
Yury Komar
Модератор
Эксперт .NET
2366 / 2171 / 347
Регистрация: 27.01.2014
Сообщений: 3,906
Завершенные тесты: 1
10.04.2015, 11:17 #3
Fakels, а что ты хочешь делать с этим файлом когда он освободится?
0
Fakels
19 / 19 / 4
Регистрация: 07.03.2015
Сообщений: 258
10.04.2015, 14:04 #4
Цитата Сообщение от Yury Komar Посмотреть сообщение
Fakels, а что ты хочешь делать с этим файлом когда он освободится?
Это ты у ТС спрашивай что он с ним хочет сделать.
0
Yury Komar
Модератор
Эксперт .NET
2366 / 2171 / 347
Регистрация: 27.01.2014
Сообщений: 3,906
Завершенные тесты: 1
10.04.2015, 14:16 #5
Fakels, А да, ссори

Добавлено через 11 секунд
SeregaBarmaley, а что ты хочешь делать с этим файлом когда он освободится?
0
SeregaBarmaley
23 / 23 / 8
Регистрация: 01.10.2012
Сообщений: 204
10.04.2015, 14:42  [ТС] #6
Yury Komar, удалить. Но программа выдаст ошибку, дескать файл не может быть удалён, так как он занят другим процессом.
0
Yury Komar
Модератор
Эксперт .NET
2366 / 2171 / 347
Регистрация: 27.01.2014
Сообщений: 3,906
Завершенные тесты: 1
10.04.2015, 14:53 #7
SeregaBarmaley, а если создать батник, который будет следить за файлом, и как только файл освободится - удалить его и удалить самого себя?

Добавлено через 50 секунд
SeregaBarmaley, хотя можно и средствами самого NET думаю. попробовать надо
0
Fakels
19 / 19 / 4
Регистрация: 07.03.2015
Сообщений: 258
10.04.2015, 16:16 #8
Цитата Сообщение от SeregaBarmaley Посмотреть сообщение
Но программа выдаст ошибку, дескать файл не может быть удалён, так как он занят другим процессом.
И на сколько долго этот файл бывает занят сторонним процессом?
И чем тебя не устраивает использовать проверку с использованием оператора On Error Goto
0
SeregaBarmaley
23 / 23 / 8
Регистрация: 01.10.2012
Сообщений: 204
10.04.2015, 17:16  [ТС] #9
Цитата Сообщение от Fakels Посмотреть сообщение
И на сколько долго этот файл бывает занят сторонним процессом?
секунд 5
0
Yury Komar
Модератор
Эксперт .NET
2366 / 2171 / 347
Регистрация: 27.01.2014
Сообщений: 3,906
Завершенные тесты: 1
10.04.2015, 17:26 #10
SeregaBarmaley, ну давай попробуем средствами NET, если нет, тогда дам тебе пример через БАТНИК, который будет следить за файлом вплоть до перезагрузки компьютера.
0
SeregaBarmaley
23 / 23 / 8
Регистрация: 01.10.2012
Сообщений: 204
10.04.2015, 17:32  [ТС] #11
Код не работает. Мне нужно, чтобы файл удалялся. Но возникает ошибка, дескать файл занят другими процессом. Код, приведённый выше не работает.

Добавлено через 4 минуты
При нажатии на кнопку, выполняется программный код, который удаляет файл, но файл занят другим процессом, поэтому возникает ошибка и программа останавливается. нужно чтобы программа зациклилась на файле, проверяя его занятость, и когда файл будет свободным, то произойдёт его удаление.
0
Yury Komar
Модератор
Эксперт .NET
2366 / 2171 / 347
Регистрация: 27.01.2014
Сообщений: 3,906
Завершенные тесты: 1
10.04.2015, 17:36 #12
Лучший ответ Сообщение было отмечено SeregaBarmaley как решение

Решение

SeregaBarmaley, ну что, все решаемо, держи готовый код

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Sub Удалить_Файл(FilePath As String)
        If FilePath <> "" And IO.File.Exists(FilePath) Then
            Application.DoEvents()
            Do Until IO.File.Exists(FilePath) = False
                Application.DoEvents()
                On Error Resume Next
                Kill(FilePath)
            Loop
IO.File.Exists(FilePath) = false thenMsgBox("Файл удален.") else msgbox "Не могу удалить файл"
        Else
            MsgBox("Файл не найден.")
        End If
    End Sub

использование

vb.net
1
Удалить_Файл(Путь_к_Файлу)
1
SeregaBarmaley
23 / 23 / 8
Регистрация: 01.10.2012
Сообщений: 204
10.04.2015, 17:56  [ТС] #13
Yury Komar, Да, это то что нужно, теперь всё работает. При выполнении программного кода, файл проверяется на занятость, и как только файл освобождается, то он удаляется.
0
Fakels
19 / 19 / 4
Регистрация: 07.03.2015
Сообщений: 258
10.04.2015, 17:57 #14
Цитата Сообщение от SeregaBarmaley Посмотреть сообщение
Код, приведённый выше не работает.
Тот код по сути и не код а просто как подсказка к реализации кода. не знаю зачем его модератор в тэг кода поместил.
0
Памирыч
Почетный модератор
20843 / 8725 / 1080
Регистрация: 11.04.2010
Сообщений: 11,012
10.04.2015, 18:03 #15
Цитата Сообщение от Fakels Посмотреть сообщение
не знаю зачем его модератор в тэг кода поместил.
Для удобочитаемости. Все, что имеет структуру кода должно заключаться в теги, хоть псевдокод, хоть код на Хаскелле
0
Yury Komar
Модератор
Эксперт .NET
2366 / 2171 / 347
Регистрация: 27.01.2014
Сообщений: 3,906
Завершенные тесты: 1
10.04.2015, 18:16 #16
Цитата Сообщение от SeregaBarmaley Посмотреть сообщение
При выполнении программного кода, файл проверяется на занятость, и как только файл освобождается, то он удаляется.
да, всё верно.
А если нужно следить за освобождением файла после прекращения работы вашей программы, то я в этом случ использую BAT или CMD.
[+]: удаляет файл даже после прекращения работы вашего приложения; без диспетчера задач не остановишь цикл; при удалении файла BAT или CMD во время работы цикла - ошибок не будет, цикл работает.
[-]: создаётся доп файл(но это не то чтобы минус, так как в конце-концов он сам себя и удаляет.

Вот.


Реализовывал это на VB6, но кому надо могут подкорректировать по VB.NET

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Form_Unload(Cancel As Integer)
'-----------Создаем bat-файл---------------
Open App.Path + "\Delself.bat" For Append As #1
Print #1, "@echo off"
Print #1, ":try"
Print #1, "del " + App.EXEName + ".exe"
Print #1, "if exist " + App.EXEName + ".exe goto try"
Print #1, "del " + App.Path + "\Delself.bat"
Close
'--------------------------------
Shell App.Path + "\Delself.bat", vbHide
End Sub
1
10.04.2015, 18:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2015, 18:16

Как узнать каким процессом была интегрирована dll?
Есть много способов узнать список процессов, прицеплённых к ним dll, пути, но...

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

Ошибка открытия файла, так как он занят другим процессом
Возникла проблема: при нажатии на кнопку прописал код, чтобы открывался файл из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru