【问题标题】:Delete a file even if it is running删除文件,即使它正在运行
【发布时间】:2020-04-20 07:23:07
【问题描述】:

我需要删除一个文件,即使它被正在运行的进程使用。 首先,当然需要关闭进程,然后如果文件存在,则应该删除它。

我正在使用以下代码:

示例:

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)

我试过上面的代码,它不起作用,文件仍在运行,也没有被删除!你能提供一个可靠的解决方案来解决这个问题吗? 谢谢。

【问题讨论】:

  • GetProcessesByName("test") 是否确实获得了您想要的流程?如果在任务管理器中手动杀死进程,可以手动删除文件吗?
  • 是的,如果我从任务管理器中杀死它,我可以删除该文件,但是我希望我的应用程序首先杀死该进程(仅当它正在运行时),然后再删除该文件。 “测试”仅作为样本提供。它将被我想要杀死和删除的文件名替换。
  • GetProcessesByName("someFilename") 一定能得到你想要的进程吗?
  • 是的,确实如此……
  • 如果你让代码暂停几秒钟,Threading.Thread.Sleep(2000),它可以删除文件吗?就像你在任务管理器中杀死它然后删除它之间有一个小的延迟。

标签: vb.net file process


【解决方案1】:

Process.Kill() 的后效可能需要一段时间才能完成。

如果在 Kill 命令和 File.Delete 之间添加延迟,例如 Threading.Thread.Sleep(2000),则后者可能就足够了。

更强大的解决方案可能涉及反复尝试删除文件,最多尝试一些合理的次数,尝试之间有一小段时间延迟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    相关资源
    最近更新 更多