禁用FileSystemWatcher进行特定更新?

dev*_*os1 7 .net c# filesystemwatcher

当我的应用程序对目录中的文件进行更改时,有没有人有任何想法如何可靠地禁用FileSystemWatcher对象,以便我只关注对目录的外部更改?

我已经尝试EnableRaisingEvents在执行写入之前立即设置为false并在之后立即将其设置为true,但似乎这种方法不可靠,偶尔我仍然会触发事件.

我能想到的唯一另一件事就是在执行写操作后等待一小段时间让操作系统在重新启用FSW之前完成目录的修改,但这似乎是hackish而我不喜欢它.


要添加问题,该目录可能包含许多文件,其身份超出了我的知识和控制范围,因此我不能等待事件触发特定文件然后忽略它.一次修改后可能会触发任意数量的FSW事件(因为可能有许多文件被更新).

Sha*_*har 6

您无法使用.NET API执行此操作.

正如多个用户指出的那样,您可能最好保留一个更改列表,并从您观察到的变更集中减去它们.

您也可以使用Win32级别的API,如果我没有弄错的话,它为进行更改的进程提供了一个PID(不确定这一点,我写了一个驱动程序,之前在内核空间中做了这个(以及更多) ).

更新:我在这个项目的团队中打电话给某个人,他们确认我们只在内核空间中拥有PID.