1

私はプログラムを書きましたが、独自のファイルウォッチャー (ファイルを開くことができるかどうかを確認するループ) が必要です。このようなもの:

while (loadedFiles.Count > 0 || isNeedReRead)
{
    Thread.Sleep(1000);
    if (isNeedReRead)
        ReadFromRegistry();

    foreach (var file in loadedFiles)
    {
        if (!IsFileLocked(file.Value))
        {
              // logic
        }
    }
}

ソース:ファイルが使用中かどうかを確認する方法はありますか?

これが私の解決策です:

try
{
    using (Stream stream = new FileStream(
        path, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
    {
        stream.Close();
        return false;
    }
}
catch (IOException)
{
    return true;
}

ワード、エクセルで問題なく使えます。ただし、プロセスがファイルをロックしない場合、この方法は役に立ちません。たとえば、開いているビットマップ ファイルが変更されている場合、IsFileLockedfalse を返します。

何か案は?

4

1 に答える 1