Удалить файл, даже если он запущен - PullRequest
0 голосов
/ 20 апреля 2020

Мне нужно удалить файл, даже если он используется запущенным процессом. Во-первых, конечно, процесс должен быть остановлен, и после этого файл должен быть удален, если он существует.

Я использую следующий код:

Пример:

Dim Processes() As Process = Process.GetProcessesByName("test")
    For Each Process As Process In Processes
        Process.Kill()
    Next
    My.Computer.FileSystem.DeleteFile(C:\ProgramFiles\Test\test.exe)

Я пробовал приведенный выше код, он не работает, файл все еще работает, а также не удаляется! Можете ли вы предоставить надежное решение этой проблемы? Спасибо.

1 Ответ

0 голосов
/ 20 апреля 2020

Для завершения последствий Process.Kill() может потребоваться некоторое время.

Если вы добавите задержку между командой Kill и File.Delete, например, Threading.Thread.Sleep(2000), она может этого достаточно для завершения.

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

...