0

重複の可能性:
ファイルが使用中かどうかを確認する方法はありますか?

ファイルがロック解除されており、別のプロセスで使用されていないことを確認する非常に簡単な方法があることを確認しました。

public static bool Check(string filepath)
{
  try
  {
    using (File.Open(filepath, FileMode.Open, FileAccess.Read, FileShare.None)) {}
  }
  catch (Exception e)
  {
    log("file not ready" + e);
    return false;
  }
  return true;
}

それは素晴らしいことですが、メソッドが FileStream をパラメーターとして使用するかどうかを確認するにはどうすればよいでしょうか?

public static bool Check(FileStream f)
{ 
//...

助言がありますか?ありがとうございました

4

1 に答える 1

2

それはあなたの目標にもよると思いますが、これをチェックすることは、私が想像できるほとんどのアプリケーションにとっておそらく正しい道ではありません.

これをチェックして、使用していない場合は何かを実行できるようにしたいと思います (つまり、チェックしてから後でコード行を記述します)。ここでの課題は、途中で他の誰かがファイルを取得し、試みた操作に失敗する可能性があることです。

一般的に言えば、自分がやりたいことを何でもやってみて、そこで失敗をキャッチするということです。防御的にコーディングし、とにかくこれを想定する必要があります。余分なチェックが多くのことを達成することはめったにありません。

于 2012-09-03T22:51:16.687 に答える