我需要在无限循环中运行FileSystemWatcher来监视文件的更改,但此文件每隔几天才会更改一次,也许每周只更改一次.在FileSystemWatcher的MSDN示例中,有一个循环,而用户没有在控制台输入q:
while(Console.Read()!='q');
我不希望它一直可用,因此它不会被意外杀死 - 它必须在无限循环中无需用户干预的情况下运行.我是否必须将循环更改为
while (true);
所以线程不退出?仅此一点并不理想,因为它会固定CPU - 添加Thread.Sleep调用将消除CPU负载,在这种情况下,由于文件很少更改,可能会长时间休眠.这是最好的方式吗?我应该如何确保此线程保持活动状态,以便FileSystemWatcher可以在文件更改时执行操作?这是在Windows服务器(使用.NET framework 2.0版)上运行,因此如果需要,可以将其作为Windows服务.
如果这是在服务器上运行,服务似乎是一个不错的选择.
如果你想要一些更具互动性的东西,我的系统托盘中有一个小应用程序,可以在我们的"问题"文件夹中显示.它使用Application.Run()方法保持自身运行而不需要循环,即
class MainEntryClass { static void Main(string[] args) { FolderAlerter fa = new FolderAlerter(); Application.Run(); } }
然后我在FolderAlerter中设置我的FileSystemWatcher.