




Если файл открывается другим процессом в монопольном режиме, вы не можете этого сделать - Windows вам не позволит. В этом случае лучшее, что вы можете сделать, - это либо дождаться, пока другой процесс закроет файл, а затем удалить его, либо удалить его при следующей перезагрузке, используя MoveFileEx() с флагом MOVEFILE_DELAY_UNTIL_REBOOT и целевым расположением NULL.
Если файл открывается неисключительно другим процессом, вы можете просто вызвать DeleteFile() в обычном режиме (при условии, что у вас есть на это разрешение). Файл останется, пока другой процесс откроет его, но он будет удален, как только другой процесс его закроет.
(И да, я понимаю, что эти ссылки предназначены для Win32 C API; те же функции должны быть доступны в VB .NET)
Я не думаю, что это возможно. В Windows вы не можете удалить файл с открытыми дескрипторами. http://support.microsoft.com/kb/320081
Однако, судя по вашему описанию, вам не нужно оставлять файл открытым в вашем приложении. Откройте файл, прочтите изображение и закройте файл. Затем файл можно удалить, но приложение все еще будет иметь данные изображения.
См., Среди прочего, удалить заблокированные файлы, Преодоление «Это используется другим человеком или программой»..
Вы можете закрыть процесс, а затем удалить его или удалить при перезагрузке. Используйте приведенные выше предложения для получения информации об использовании MoveFileEx () с Windows.
Чтобы закрыть процесс, вы можете сделать следующее:
For Each proc As Process In System.Diagnostics.Process.GetProcessesByName("process name here")
proc.Kill()
Next
Связанный вопрос stackoverflow.com/questions/215461/delete-locked-files