C# - 检测目录中的锁定文件

时间:2014-06-06 12:59:16

标签: c# io

我正在寻找一种方法来监视锁定文件的目录(及其子目录),即当应用程序打开文件并将其锁定时,应该在我的应用程序中触发事件。

到目前为止,我一直在使用FileSystemWatcher用于其他目的,例如检测重命名,更新等。但是观看锁定[使用上次访问]需要按指定Here进行注册表调整 到目前为止,这不是一个选择。

到目前为止,我所想到的其他解决方案是继续使用另一个线程中的FileInfo对象查找“LastAccess”属性的更改,并验证文件是否已锁定。

有更好的解决方案吗?

2 个答案:

答案 0 :(得分:1)

不幸的是,无法查看文件是否被进程锁定。

但您可以随时尝试访问该文件并根据以下内容触发事件:

public bool IsFileLocked(string filePath)
{
    try
    {
        using (File.Open(filePath, FileMode.Open)){}
    }
    catch (IOException e)
    {
        retturn true;
    }  

    return false;
}

当您的应用程序无法访问该文件时(因此它正被另一个程序使用),此函数将返回true,否则返回false。

答案 1 :(得分:0)

您可以尝试通过Sysinternals检查handle.exe,有​​人有类似问题:Check for locked files in Directory and find locking applicaiton

我想你可以从你的应用程序中调用它。