不允许访问文件夹

时间:2014-01-22 02:38:53

标签: vb.net

我在VB中编写了一个程序,其中一些电子邮件附件以编程方式存储在计算机中。

保存文件的过程如下:

  1. 创建一个临时文件夹并将附件保存在那里。 “C:\ tempFolder \ attachment.fletyp”

  2. 分析此文件,然后保存到相应的文件夹,例如“C:\ AnotherFolder \ attachment.fletyp”

  3. 保存文件后,会根据邮件发送时间设置文件的lastWriteTime属性。

  4. “C:\ AnotherFolder”的lastwritetime也发生了变化。

  5. 从“C:\ tempFolder”
  6. 中删除全部

    有时,它运作正常。但有时会突然发生错误,错误信息是:

      

    进程无法访问文件“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写入其父文件夹。如果没有发生异常,请尝试再次运行代码。

    我该如何处理?

1 个答案:

答案 0 :(得分:0)

试试这个

Dim path As String = "C:\anotherFolder" 

Directory.SetLastWriteTime(path, DateTime.Now)