当前位置:  开发笔记 > 运维 > 正文

如何让FileSystemWatcher线程永远运行?

如何解决《如何让FileSystemWatcher线程永远运行?》经验,为你挑选了1个好方法。

我需要在无限循环中运行FileSystemWatcher来监视文件的更改,但此文件每隔几天才会更改一次,也许每周只更改一次.在FileSystemWatcher的MSDN示例中,有一个循环,而用户没有在控制台输入q:

while(Console.Read()!='q');

我不希望它一直可用,因此它不会被意外杀死 - 它必须在无限循环中无需用户干预的情况下运行.我是否必须将循环更改为

while (true);

所以线程不退出?仅此一点并不理想,因为它会固定CPU - 添加Thread.Sleep调用将消除CPU负载,在这种情况下,由于文件很少更改,可能会长时间休眠.这是最好的方式吗?我应该如何确保此线程保持活动状态,以便FileSystemWatcher可以在文件更改时执行操作?这是在Windows服务器(使用.NET framework 2.0版)上运行,因此如果需要,可以将其作为Windows服务.



1> aehiilrs..:

如果这是在服务器上运行,服务似乎是一个不错的选择.

如果你想要一些更具互动性的东西,我的系统托盘中有一个小应用程序,可以在我们的"问题"文件夹中显示.它使用Application.Run()方法保持自身运行而不需要循环,即

class MainEntryClass
{
    static void Main(string[] args)
    {
        FolderAlerter fa = new FolderAlerter(); 
        Application.Run();
    }
}

然后我在FolderAlerter中设置我的FileSystemWatcher.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有