アプリ版:「スタンプのみでお礼する」機能のリリースについて

特定フォルダに対してDicetroy.Moveを行うと

IOExceptionはハンドルされませんでした
Access to the path 特定フォルダの絶対パス is denied

という再現性のあるエラーが出ることがあり、長らく原因が分からなかったが先日発生条件は
フォルダ内にthumbnail.dbファイルを含み、thumbnail.dbがエクスプローラーによってロックされているとき、つまりその特定フォルダを開いてjpgなどの画像ファイルのサムネイルがエクスプローラー上で表示されている場合に発生するという仮説を立てた

原因は分かったのですが、このエラーをしっかり自分でハンドルするために、”thumnail.db(特定ファイル)がロックされているかどうかの確認”を取るための方法がないかどうか調べたのですがよく分からなかったので質問した次第です。

thumbnail.dbのロックされているかどうかのステータスの確認、これはオプションですが、ロックされている場合ロックしているプロセスの名前の取得をする関数または方法を教えてください

A 回答 (1件)

誰かがファイルを掴んでいるかどうかを調べるには「リネームしてみる」が一番簡単でしょう。



リネームしてリネームに成功したら、元の名前に再リネームし「ロックされてない」と判断します。

リネームしてリネームに失敗したら、「ロックされている」と判断します。

んで、誰がどのファイルを掴んでいるかは、簡単には判らないと思います。

マイクロソフトには、以下のようなツールがあるので「やれば出来る」とは思います。
http://technet.microsoft.com/ja-jp/sysinternals/ …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!