我的程序创建一个文件,写入它,关闭它,将它重命名为其他东西。对于一位客户,重命名经常因共享冲突而失败,我无法重新创建此问题。
该程序是异步多线程的,在关闭和重命名时保证创建和写入已经完成,但关闭和重命名可能因处于不同线程中而以任意顺序发生。
客户向我保证没有安装任何 av 或备份程序,并且我们已尝试禁用 Windows Search。
当关闭发生在重命名之前或之后,一切正常(文件使用共享的读+写+删除标志打开)。然而,当它们发生的时间非常接近时,它有时会失败。使用 ProcessMonitor 运行时,不会发生错误。
我知道重命名是由几个文件操作(打开,设置信息,至少关闭)组成的,所以我假设文件关闭可能与文件重命名交错,这似乎是核心问题。
我将能够通过确保在重命名后关闭文件来解决这个问题。但我不明白究竟是什么导致了共享违规,我想知道更多为什么这是一个问题。谁能给我更多关于发生了什么的信息?