当许多文件同时添加到目录中时,FileSystemWatcher 无法正常工作...
观察者根本找不到目录中的所有文件 - 仅当文件被一一放置在文件夹中时 - 如果大量文件同时复制到文件夹中则不会......
线程的创建是问题的解决方案还是有其他方法来处理问题?
The 该类的文档 http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx详细说明该问题:
Windows 操作系统通知您的组件由 FileSystemWatcher 创建的缓冲区中的文件更改。如果短时间内发生多次变化,缓冲区可能会溢出。这会导致组件失去对目录中更改的跟踪,并且它只会提供全面通知。增加缓冲区的大小内部缓冲区大小 http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.internalbuffersize.aspx属性很昂贵,因为它来自无法换出到磁盘的非分页内存,因此请保持缓冲区足够小但足够大,以免错过任何文件更改事件。为了避免缓冲区溢出,请使用通知过滤器 http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.notifyfilter.aspx and 包含子目录 http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.includesubdirectories.aspx属性,以便您可以过滤掉不需要的更改通知。
因此,在这种情况下,线程可能不会有太大帮助。您可能想要增加缓冲区大小(但它应该有多大可能很大程度上取决于计算机和磁盘本身的速度)或通过设置适当的过滤器来限制您感兴趣的文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)