C#中的文件系统观察程序只被触发一次

时间:2012-01-03 22:33:02

标签: c# .net

我正在系统托盘应用程序中启动文件系统观察程序。它监视本地文件夹中的文本文件。但是FS_changed事件在启动应用程序后只触发一次。

 FileSystemWatcher fWatch = new FileSystemWatcher();
 fWatch.BeginInit();     
 fWatch.Path = Path.GetTempPath();
 fWatch.Filter = "File1.txt";                       
 fWatch.Changed += new FileSystemEventHandler(fWatch_Changed);
 fWatch.EnableRaisingEvents = true;
 fWatch.EndInit();

我没有处理创建/删除的事件。但我也尝试了这些(只是为了检查),尽管在此过程中删除并创建了本地文件,但它们根本没有被调用。

有任何想法/建议吗?

3 个答案:

答案 0 :(得分:5)

它可能会收集垃圾。你是否保留对该对象的引用?

答案 1 :(得分:1)

你确定没有处理fWatch的实例吗?它是一个持续监听的方法的一部分,否则你可能只在实例存在时才收到事件。你能否把你正在使用的代码放在一边让观察者保持活力,这样我们就能更详细地帮助你。

答案 2 :(得分:0)

作为重载之一,你可以将你想要观察的路径传递给该对象的构造函数

 FileSystemWatcher fWatch = new FileSystemWatcher(Path.GetTempPath()); 

例如..?