1

このメソッドを使用して ASP.NET Web アプリケーションからファイルを読み取ろうとしているとき:

string strContents;
using (StreamReader sr = new StreamReader(strFilePath))
{
    strContents = sr.ReadToEnd();
}

次の例外が発生します。

別のプロセスで使用されているため、プロセスはファイル 'file_path' にアクセスできません。

このファイルをロックしているものを知る方法はありますか?

PS。例外の中からこれを知ることができればいいのですが、それが不可能な場合、他の方法でそれを知る方法はありますか?

4

1 に答える 1

1

標準的な答えは、 handleなどの SysInternals ツールの 1 つを使用して、どのプロセスがファイルをロックしているかを確認することです。

自分のコードであると確信している場合 - コード レビューは、WinDbg を使用してプロセスのダンプを掘り下げるよりも簡単かもしれません。

自分で書きたい場合は、「Windows Internals」の本を読むことは基本的に必須であり、相互運用に関する十分な知識があればプラスになります。

于 2013-03-15T05:11:00.600 に答える