FileSystemWatcher和设计模式

本文关键字:设计模式 FileSystemWatcher | 更新日期: 2023-09-27 18:25:51

im试图构建一个应用程序,该应用程序使用FileSystemWatcher监视大量目录,并在发生更改时通知搜索引擎。我应该为每个目录创建一个新的FileSystemWatcher吗?我应该应用特殊的设计模式吗?我需要一些帮助来设计解决方案。

谢谢!

FileSystemWatcher和设计模式

要最大限度地减少FileSystemWatcher对象的数量,可以利用FileSystemWatcher类的属性:

  • IncludeSubdirectories-如果要监视目录中的每个子目录,请将其设置为true。因此,您将只为父目录使用一个观察程序,而不是为每个子目录创建一个专用的观察程序
  • NotifyFilter-使用它来限制监视文件的范围(例如,如果您只想检测对*.txt文件的更改(或其他内容,有很多选项)
  • InternalBuffer-您可以调整此属性以在冗长性和内存消耗之间找到平衡

如果有一个特定的有限的文件夹列表需要关注,那么我想可以为每个文件夹使用一个单独的观察程序。您通常希望监视多少个文件夹?

据我记忆,当我尝试使用FileSystemWatcher时,它缺乏以有用的方式进行筛选的能力,至少对我来说是这样。我想我最终不得不为我想要查看的每个文件扩展名创建一个FileSystemWatcher。同样取决于你所关注的变化,FileSystemWatcher抛出了很多事件,有些事件看起来是双重的。但如果你正在寻找刚刚创建的,我不认为这会是一个问题。

我确实发现RX扩展非常好地帮助过滤掉了我需要的东西。本页有一个示例。http://www.developerit.com/2010/04/20/reactive-extensions-vs-FileSystemWatcher

我可能会为您试图查看的每种类型的更改或文件创建一个FileSystemWatcher。如果它是一切,那么一个可能就足够了。