◀ANSI版開発トップへ
  • 4058 ファイル更新の誤検出修正
  • [4058] ファイル更新の誤検出修正 ryoji 2005年10月20日 22:27

    上書保存を実行した後で、「ファイルが更新されました」のメッセージボックスが表示されることがあります。
    (自分で更新したのに他のプロセスに書き換えられたと勘違いしている)

    新しい PC だと頻発しているので、環境依存で頻度は違うみたいです。
    頻発する環境: WinXP(SP2), Pentium4(3.4GHz, ハイパースレッディング有効)
    ※ハイパースレッディング有効だと頻度が高い?
    特に、当該ファイルがエクスプローラで選択されているようなときはかなり高い確率で起きます。
    同じファイルを同時に VC++ で開いているときにも起きるみたい。

    調べてみたところ、保存時にタイムスタンプを取得する再オープンのところで、
    ERROR_SHARING_VIOLATION(プロセスはファイルにアクセスできません。別のプロセスが使用中です。)
    のエラーが起きていて、タイムスタンプ取得に失敗していました。

    FindFirstFile でタイムスタンプ取得するように変更したら起きなくなりました。
    関連箇所の修正パッチを作成したので Up しておきます。
    http://groups.yahoo.co.jp/group/sakura-editor/files/Developer/Source/ssrc_2005-10-09_FileTime.zip