2013-03-18 66 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

詞「另一個過程」是非常明確的。

事實證明,我的程序中的其他功能打開同一文件兩次,並關閉它只有一次。修復刪除它的問題。

因此,當你遇到同樣的錯誤時,可以修改此文件時,嘗試在其他位置搜索程序。

感謝您的評論,他們肯定給了我一些關於優秀編程的提示。

相關問題