我在VB中编写了一个程序,其中一些电子邮件附件以编程方式存储在计算机中。
保存文件的过程如下:
创建一个临时文件夹并将附件保存在那里。 “C:\ tempFolder \ attachment.fletyp”
分析此文件,然后保存到相应的文件夹,例如“C:\ AnotherFolder \ attachment.fletyp”
保存文件后,会根据邮件发送时间设置文件的lastWriteTime属性。
“C:\ AnotherFolder”的lastwritetime也发生了变化。
有时,它运作正常。但有时会突然发生错误,错误信息是:
进程无法访问文件“C:\ AnotherFolder”,因为它正由另一个进程使用。
请注意,程序无法访问该文件夹,而不是文件。
我的猜测是,它首先发生在第3步,当程序仍在文件的lastwritetime上“写入”时,当第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写入其父文件夹。如果没有发生异常,请尝试再次运行代码。
我该如何处理?
答案 0 :(得分:0)
试试这个
Dim path As String = "C:\anotherFolder"
和
Directory.SetLastWriteTime(path, DateTime.Now)