一段时间后,FileSystemWatcher停止引发事件

我们已经构建了一个使用FileSystemWatcher监听文件夹的窗口服务,在创建时我们处理文件,依此类推。 但是几天后事件就停止了。

  • 它可能被垃圾收集器(GC)收集吗?
  • GC是否收集持有类(单身)?
  • 我应该使用弱事吗?
  • 我是否有错误意味着事件未注册?

我认为问题是,FSW有一个内部缓冲区,当它溢出错误时,请看一下本文提供的代码来解决这个问题。
希望这有助于任何人。

如下所示,有几件事要尝试:

  • 在timer tick事件处理程序中,在执行tick事件处理之前停止计时器,并在退出处理程序之前重新启动它
  • 将计时器代码包装在try / catch块中以查看发生了什么。
  • 阅读System.Timers.Timer类的Elapsed事件不会在Windows服务错误描述/修复中引发 ,看看是否对您有所帮助。

综上所述:

 protected virtual void TimerTick(object sender, EventArgs e) { // stop your timer this.timer.Stop(); try { // TODO: add event handler specifics } catch { // TODO: add some logging to help you see what's going on } // restart your timer this.timer.Start(); }