我想知道使用FileSystemWatcher类观察文件/目录是否是非常耗费内存的。我正在用C#开发一个桌面应用程序,它将在低性能计算机上不断地在幕后运行,我需要一些方法来检查各种文件是否已经改变。我可以想到几个解决方案:
有什么建议吗?
谢谢!
badPanda
答案 0 :(得分:6)
基于事件总是比使用相同或生成新线程的轮询更有效,因此使用FileSystemWatcher是正确的想法。在我看来,使用委托的编程模型也更优雅。
答案 1 :(得分:3)
我使用FileSystemWatcher类来监视数百个目录中的* .txt文件更改,而不会出现性能问题。所以我想这是最好的解决方案。
答案 2 :(得分:2)
您想要使用FileSystemWatcher。这是该对象的目的。它已经开发并经过广泛使用测试。你写的任何东西都不会受到它所具有的测试和优化的严格审查。没必要时,没有理由重新发明轮子。
答案 3 :(得分:1)
在我目前正在进行的大型文件传输项目(全国范围内)中,FileSystemWatcher是一种单向选项(对文件锁,事件排队等进行一些管理)。在使用底层操作系统构造(提供所有这些基于事件的交互)时,你有很多优点,我不认为你会实现这种有效的行为。
答案 4 :(得分:1)
我见过一些程序,每次程序重新获得焦点时,都会手动检查文件/目录的变化。如果您的计划满足一些要求,这可能是合适的:
即便如此,即使在这种情况下FileSystemWatcher
也没问题。