Удалить файл, используемый во время выполнения

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

Связанный вопрос stackoverflow.com/questions/215461/delete-locked-files

BlackMael 19.11.2008 10:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
5 945
4

Ответы 4

Если файл открывается другим процессом в монопольном режиме, вы не можете этого сделать - 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

Другие вопросы по теме