我们已经用FileSystemWatcher
建立了一个监听文件夹的窗口服务,当创建时我们处理文件等等。但几天后,这个活动就停止了。
- 是否有可能被垃圾收集器(GC)收集?
- GC收集它持有类(这是一个单例)吗?
- 我应该使用弱事件吗?
- 我有一个bug,这意味着事件得到未注册?
我认为问题是,FSW有一个内部缓冲区,当它溢出时是一个错误,看看这篇文章提供的代码来解决这个问题。
可以尝试以下几种方法:
- 在计时器滴答事件处理程序中,在进行滴答事件处理之前停止计时器,并在退出处理程序之前重新启动计时器
- 将计时器代码包装在try/catch块中以查看发生了什么。
- 在Windows服务错误描述/修复中读取System.Timers.Timer类的Elapsed事件,看看这是否对您有帮助。
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();
}