【发布时间】:2019-02-19 17:42:49
【问题描述】:
我有一个用 VB.NET 编写的代码,它包含两个文件操作,即 File.Exists() 和 File.Delete(filepath),其中 filepath 是要删除的文件的路径。每当我运行此代码时,它第一次执行时都没有问题,如:-
如果 File.Exists 为真,则 File.Delete,但是,当我下次尝试对另一个文件执行相同操作时,就会出现此问题。说“某个进程正在使用该文件”。在这里,我唯一做的就是使用 File.Exists 和 File.Delete 操作。没有读取文件/流或复制/创建文件或打开/关闭文件。
谁能在这个话题上启发我并给我一些建议?
另外,我已经尝试了堆栈溢出的大多数建议,但无济于事。
编辑:- (使用的代码)
Dim dir As String = "C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/"
Dim filePath As String = "C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/'somefile'"
Dim fileInfo As New FileInfo(filePath)
Try
If Directory.Exists(dir) Then
If File.Exists(filePath) Then
File.Delete(filePath)
End If
Catch ex As Exception
Debug.WriteLine("Error: " + ex.Message)
End Try
【问题讨论】:
-
您是否在第一次调用后立即调用第二个 Exists 并删除?
-
是的,检查文件是否存在,如果存在则删除。但不是在第一次调用后,我有一个按钮调用由两个文件操作组成的函数。
-
每次删除调用的路径是否相同(相同的文件)?根据文件系统,文件删除需要时间。如果你暂停它是否运行成功?
-
(我知道人们讨厌这个建议,但请尝试一下)尝试将
Application.DoEvents放在File.Exists前面。它会强制线程同步,有时会赶上待处理的后台操作(如 file.close、flush 等) -
如果您发布代码,会员会更容易帮助您。