文件重命名失败,拒绝访问(共享冲突)

时间:2012-06-15 13:53:12

标签: windows multithreading filesystems

我的程序创建一个文件,写入文件,关闭文件,将其重命名为其他文件。对于一个客户,重命名通常会因共享违规而失败,我无法重新创建此问题。

该程序是异步和多线程的,其中创建和写入保证在关闭和重命名时已完成,但关闭和重命名可能由于处于不同的线程而以任何顺序发生。

客户确保我没有安装av或备份程序,我们尝试禁用Windows搜索。

当重命名发生在重命名之前或之后,一切正常(文件以共享读+写+删除标志打开)。然而,当它们发生在非常接近的时间时,它有时会失败。使用ProcessMonitor运行时,不会发生错误。

我知道重命名是由几个文件操作(打开,设置信息,至少关闭)组成的,所以我假设文件close可能与文件重命名交错,这似乎是问题的核心。

我将能够通过确保在重命名后关闭文件来解决此问题。但我不明白究竟是什么原因导致共享违规,我想知道为什么这是一个问题。 有人能给我更多关于会发生什么的信息吗?

0 个答案:

没有答案