【发布时间】:2009-11-24 12:09:47
【问题描述】:
我的 Windows 服务正在使用一个线程(不是计时器),它总是循环并在每个循环中休眠 1 秒,使用:evet.WaitOne(interval);
当我启动服务时,它工作正常,我可以在任务管理器中看到它正在运行、消耗和释放内存、消耗处理器......等等 这都是正常的,但一段时间后(随机时间)服务就会停止! 它仍然存在于任务管理器中,但它现在没有消耗任何处理器工作,并且它对内存的消耗没有改变。它只是(死了但仍然像僵尸一样在任务管理器中)。
我知道在运行服务期间可能发生了许多异常(它确实在做很多事情)但是所有这些异常都在 Try catch 块中处理,那么为什么我的“总是循环”线程停止了??? 该线程还会在每次循环时记录,当他以这种方式冻结时,他不会记录任何内容(当然)
【问题讨论】:
-
也许您可以总结一下您的服务正在执行的任务。网络访问、磁盘访问、网络磁盘访问等...如果您使用的是
FileSystemWatcher,这可能是原因(在OnError中重新初始化) -
您是否尝试检查事件日志?
-
谢谢,我检查了事件日志,有一个错误来自名为:.NET 2.0 运行时错误报告,如下所示:事件源:.NET 运行时 2.0 错误报告事件类别:无事件 ID: 1000 我无法调试它,因为我无法准确预计什么时候会发生这种情况,它可能会在 2 分钟或 2 天后发生/跨度>
标签: multithreading windows-services