2013-03-18 64 views
0

我有一个下载文件的程序(简单文件更新程序)。在此之前,该文件的旧版本排队等待删除。但是如果我编辑这个文件例如在文本编辑器中(保存并关闭它),然后我的程序拒绝删除它。无法删除文件。另一个进程使用的文件

我有这样

Private Sub delete_file(ByVal dir As String) 
    Try 
     If My.Computer.FileSystem.FileExists(dir) Then My.Computer.FileSystem.DeleteFile(dir) 
    Catch ex As Exception 
     Debug.WriteLine(ex.ToString()) 
     Sleep(1000) 
     delete_file(dir) 
    End Try 
End Sub 

它永不熄灭的递归子。异常表示该文件正在被其他进程使用,并且等待不会改变任何内容。 任何线索?

[编辑] 改变子位,所以它不包含在递归异常处理程序

Private Sub delete_file(ByVal dir As String) 
    Dim ok As Boolean = True 
    Try 
     If My.Computer.FileSystem.FileExists(dir) Then My.Computer.FileSystem.DeleteFile(dir) 
    Catch ex As Exception 
     Debug.WriteLine(ex.ToString()) 
     ok = False 
    End Try 

    If ok = False Then 
     Sleep(1000) 
     delete_file(dir) 
    End If 

End Sub 
+0

这可能是一个选项,您可以在文本编辑器中设置该选项,以便在写入或读取文件时仅处理该文件。 – 2013-03-18 17:35:10

+2

此外,调用delete_file()从异常处理程序内是一个_really_坏主意。也许改变代码来通过Timer再次触发任务? – 2013-03-18 17:36:55

+0

文本编辑器就是一个例子。如果其他程序(自动)编辑此文件,则会出现相同的情况。 – 2013-03-18 18:04:22

回答

0

词“另一个过程”是非常明确的。

事实证明,我的程序中的其他功能打开同一文件两次,并关闭它只有一次。修复删除它的问题。

因此,当你遇到同样的错误时,可以修改此文件时,尝试在其他位置搜索程序。

感谢您的评论,他们肯定给了我一些关于优秀编程的提示。

相关问题