我已经在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 –