SMB 2.0 (いわゆる、Windows のネットワーク共有)のフォルダをプログラムで監視していると、他のクライアントからファイルを作成した場合に、ファイルが認識できるまでに若干タイムラグがあることに気づいたので調べてみたら、なんとこれはMS 的には仕様ということになっていました。
Windows の クライアントから SMB 2.0 の通信で、共有フォルダに作成したファイルへのアクセスがエラーになる場合がある
クライアントから、SMB 2.0 の通信でサーバー上の共有フォルダにファイルを作成後、File.Exists、_access、GetFileAttributes、FindFirstFile、FindNextFile、または _stat などの関数で、作成直後のファイルにアクセスすると "ファイルが存在しない" というエラー (NO SUCH FILE など) が発生する場合があります。
もちろんこれはキャッシュがあるためなのですが、SMB2 Client Redirector Caches Explainedによると、レジストリでキャッシュのライフタイムを制御することができるようです。当然、パフォーマンスに影響を与えるので「ファイル情報のキャッシュをオフにすることはお勧めしません」とハッキリ記載されています。
† リンク先は Web Archive !?
MS の公式サイトのリンク先が Web Archive になっていてちょっとびっくりしました。
自分の会社のサイトなのに Web Archive 使っちゃってるんですね。。。。。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/11009
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。