有没有人知道如何在我的应用程序更改目录中的文件时可靠地禁用 FileSystemWatcher 对象,以便我只监视目录的外部更改?
我试过设置 EnableRaisingEvents
在执行写入之前立即设置为 false 并在之后立即将其设置为 true,但这种方法似乎不可靠,有时我仍然会触发事件。
我唯一能想到的另一件事是在执行写入后等待一小段时间,让操作系统在重新启用 FSW 之前完成目录的修改,但这似乎很黑,我不喜欢它。
更重要的是,该目录可能包含许多文件,这些文件的身份超出了我的知识和控制范围,因此我不能等待特定文件的事件触发然后忽略它。一次修改后可能会触发任意数量的 FSW 事件(因为可能会更新许多文件)。
最佳答案
您不能使用 .NET API 执行此操作。
正如多个用户指出的那样,您最好保留一份所做的更改列表,并从您观察到的更改集中减去它们。
您还可以使用 Win32 级别的 API,如果我没记错的话,它会为您提供进行更改的进程的 PID(对此不确定,我之前编写了一个驱动程序,该驱动程序在内核空间中执行此操作(以及更多) )。
更新:我调用我在这个项目上工作的团队中的某个人,他们确认我们只有内核空间中的 PID。
关于c# - 为特定更新禁用 FileSystemWatcher?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2796432/