Удалить используемый файл во время выполнения - PullRequest
1 голос
/ 19 ноября 2008

Как удалить файл, который используется / открыт некоторым процессом во время выполнения. Я использую vb.net для своего проекта, и изображение отображается в картинке, и это следует удалить, не закрывая этот файл.

Ответы [ 4 ]

2 голосов
/ 19 ноября 2008

Если файл открывается другим процессом в монопольном режиме, вы не можете - Windows не позволит вам. В этом случае лучше всего подождать, пока другой процесс закроет файл, а затем удалить его, или удалить его при следующей перезагрузке с помощью MoveFileEx() с флагом MOVEFILE_DELAY_UNTIL_REBOOT и место назначения NULL.

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

(И да, я понимаю, что эти ссылки предназначены для Win32 C API; те же функции должны быть доступны в VB .NET)

0 голосов
/ 04 июля 2014

Вы можете закрыть процесс, затем удалить его или удалить при перезагрузке. Используйте приведенные выше рекомендации для получения информации об использовании MoveFileEx () с Windows.

Чтобы закрыть процесс, вы можете сделать следующее:

For Each proc As Process In System.Diagnostics.Process.GetProcessesByName("process name here")
proc.Kill()
Next
0 голосов
/ 19 ноября 2008

Я не думаю, что это возможно. В Windows вы не можете удалить файл с открытыми дескрипторами. http://support.microsoft.com/kb/320081

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...