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

Sab*_*tha 2 .net c#

我正在系统托盘应用程序中启动文件系统观察程序.它监视本地文件夹中的文本文件.但是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();
Run Code Online (Sandbox Code Playgroud)

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

有什么想法/建议吗?

jve*_*ema 5

它可能正在收集垃圾.你是否保留对该对象的引用?

  • @alexm:不,这不是主观的:).事件处理程序维护对*subscriber*的活动引用,防止*it*被GC'd,而不是相反.这将是一个糟糕的设计,并需要取消订阅您订阅的每个事件,否则将受到内存问题.这可能是正确的答案. (3认同)