私はプログラムを書きましたが、独自のファイルウォッチャー (ファイルを開くことができるかどうかを確認するループ) が必要です。このようなもの:
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;
}
ワード、エクセルで問題なく使えます。ただし、プロセスがファイルをロックしない場合、この方法は役に立ちません。たとえば、開いているビットマップ ファイルが変更されている場合、IsFileLocked
false を返します。
何か案は?