我已經在VB中編寫了一個程序,其中一些電子郵件的附件以編程方式存儲在計算機中。不允許文件夾訪問
保存文件的過程是這樣的:
創建一個臨時文件夾並保存附件出現。 「C:\ tempFolder \ attachment.fletyp」
這個文件進行分析,然後保存到其相應的文件夾,比如 「C:\ AnotherFolder \ attachment.fletyp」
保存文件後,它將根據郵件的發送時間設置文件的lastWriteTime屬性。
「C:\ AnotherFolder」的lastwritetime也發生了變化。
- 刪除所有來自 「C:\ tempFolder」
有時,它工作正常。但有時候會出現錯誤,錯誤信息是:
進程無法訪問文件「C:\ AnotherFolder」,因爲它正在被另一個進程使用。
請注意,它是程序無法訪問的文件夾,而不是文件。
我的猜測是,它發生在第3步,當程序仍在寫入文件的最後寫入時間並且還沒有在第4步發生時「釋放」時。
我在複製錯誤時遇到了麻煩,因爲它「恰好發生」。
我的問題是我怎麼知道文件夾本身是否仍然在一個進程下,等待它完成,然後再寫入它?
編輯
我已經測試了這個代碼產生相同的錯誤收窄的問題。我不知道情況是否如此,但我認爲有90%的可能性。
For i As Integer = 0 To 500
Try
Directory.SetLastWriteTime("C:\anotherFolder", Date.Now)
Catch ex As Exception
MsgBox(ex.Message)
End Try
Console.WriteLine(i)
Next
就我而言,電子郵件有6個附件。 (我只是把它做到了500,所以很容易發生異常)。每次保存附件時,它都會將lastWriteTime寫入其父文件夾。如果異常沒有發生,請嘗試再次運行代碼。
我該如何處理?
感謝您的答覆先生..但仍然是相同的輸出:( – Codemunkeee
http://msdn.microsoft。COM/EN-US /庫/ system.io.directory.setlastwritetime(V = vs.110)的.aspx?CS-保存琅= 1&CS-LANG = VB#代碼片段 - 1 –