FileSystemWatcher与轮询以监视文件更改

FileSystemWatcher与轮询以监视文件更改

我需要设置一个应用程序来监视在目录中创建的文件,无论是在本地还是在网络驱动器上。

会不会FileSystemWatcher或者计时器轮询是最好的选择。我过去使用过这两种方法,但没有广泛使用。

什么问题(性能、可靠性等)这两种方法都有吗?


杨魅力
浏览 621回答 3
3回答

狐的传说

我遇到的最大问题是缓冲区满了时丢失了文件。很容易修复-只要增加缓冲就行了。请记住,它包含文件名和事件,因此将其增加到预期的文件数量(试用和错误)。它确实使用不能分页的内存,因此,如果内存不足,它可以强制其他进程分页。以下是关于缓冲区的MSDN文章:FileSystemWatcher.:.InternalBufferSize属性根据MSDN:增加缓冲区大小是昂贵的,因为它来自无法交换到磁盘的非分页内存,因此尽量保持缓冲区的小。若要避免缓冲区溢出,请使用NotifyFilter和Include子目录属性筛选出不必要的更改通知。我们使用16 MB,因为一个大批预期在同一时间。工作正常,从不错过文件。我们还会在开始处理一个文件之前读取所有文件.将文件名安全地缓存起来(在本例中是数据库表),然后处理它们。对于文件锁定问题,我生成了一个进程,该进程等待文件解锁,等待一秒,然后等待两秒钟,然后等待四秒钟,以此类推。我们绝不可能民意测验。这是生产中没有错误的大约两年。

慕姐8265434

我遇到的最大问题是缓冲区满了时丢失了文件。很容易修复-只要增加缓冲就行了。请记住,它包含文件名和事件,因此将其增加到预期的文件数量(试用和错误)。它确实使用不能分页的内存,因此,如果内存不足,它可以强制其他进程分页。以下是关于缓冲区的MSDN文章:FileSystemWatcher.:.InternalBufferSize属性根据MSDN:增加缓冲区大小是昂贵的,因为它来自无法交换到磁盘的非分页内存,因此尽量保持缓冲区的小。若要避免缓冲区溢出,请使用NotifyFilter和Include子目录属性筛选出不必要的更改通知。我们使用16 MB,因为一个大批预期在同一时间。工作正常,从不错过文件。我们还会在开始处理一个文件之前读取所有文件.将文件名安全地缓存起来(在本例中是数据库表),然后处理它们。对于文件锁定问题,我生成了一个进程,该进程等待文件解锁,等待一秒,然后等待两秒钟,然后等待四秒钟,以此类推。我们绝不可能民意测验。这是生产中没有错误的大约两年。
打开App,查看更多内容
随时随地看视频慕课网APP