如何在运行时删除某个进程正在使用/打开的文件。 我正在使用vb.net进行我的项目,图像显示在picturebox中, 这应该删除,而不关闭该文件。
答案 0 :(得分:2)
如果文件是由独占模式的其他进程打开的,则不能 - Windows不会让你。在这种情况下,您可以做的最好的事情是等待其他进程关闭文件然后将其删除,或者使用带有标记MOVEFILE_DELAY_UNTIL_REBOOT
的{{3}}在下次重新启动时将其删除和目的地位置NULL
。
如果文件是由其他进程非独占打开的,则可以正常调用MoveFileEx()
(假设您有权这样做)。该文件将在其他进程打开时保留,但只要其他进程关闭它就会被删除。
(是的,我意识到这些链接适用于Win32 C API;在VB .NET下应该可以使用相同的功能)
答案 1 :(得分:1)
答案 2 :(得分:0)
我不认为这是可能的。在Windows上,您无法删除具有打开句柄的文件。 http://support.microsoft.com/kb/320081
但是,根据您的描述,您无需在应用程序中保持文件处于打开状态。打开文件,读取图像然后关闭文件。然后可以删除该文件,但应用程序仍将具有图像数据。
答案 3 :(得分:0)
您可以关闭进程,然后将其删除,或者在重新启动时删除。 使用上述建议获取有关在Windows中使用MoveFileEx()的信息。
要关闭某个流程,您可以执行以下操作:
For Each proc As Process In System.Diagnostics.Process.GetProcessesByName("process name here")
proc.Kill()
Next