1

私のプログラムはファイルを作成し、書き込み、閉じ、名前を別の名前に変更します。あるお客様の場合、名前の変更が共有違反で失敗することが多く、この問題を再現できませんでした。

プログラムは非同期でマルチスレッドであり、作成と書き込みはクローズと名前変更の時点で完了することが保証されていますが、クローズと名前変更はスレッドが異なるため、任意の順序で発生する可能性があります。

お客様は、AVまたはバックアッププログラムがインストールされていないことを確認し、WindowsSearchを無効にして試しました。

名前の変更の前または後にクローズが発生すると、すべてが機能します(ファイルは共有の読み取り+書き込み+削除フラグで開かれます)。ただし、それらが非常に近い時間に発生している場合、失敗することがあります。ProcessMonitorで実行している場合、エラーは発生しません。

名前の変更はいくつかのファイル操作(少なくとも開く、情報の設定、閉じる)で構成されていることを知っているので、ファイルの名前変更とファイルの近くがインターリーブされる可能性があると思います。問題。

名前の変更後にファイルが確実に閉じられるようにすることで、この問題を回避できるようになります。しかし、共有違反の原因が正確にはわかりません。なぜこれが問題になるのかを詳しく知りたいと思います。誰かが私に何が起こるかについてもっと情報を教えてもらえますか?

4

0 に答える 0