【发布时间】:2015-12-24 08:12:45
【问题描述】:
我有多个 windows services 在服务器上运行 24/7。对于记录事件等。我已经使用log4net,但我希望能够查看我的所有服务是否仍在运行。所以我偶然发现了this question 并了解了ServiceController 课程。现在我有了创建另一个服务的想法,在其中我为每个服务创建一个ServiceController 对象,并使用WaitForStatus 方法在任何服务停止时得到通知。我可以通过 servicecontroller 服务中托管的WCF 从外部检查任何状态。
但我也看到the answer to this question 声明ServiceController 应该被关闭和处置。让我的ServiceController 24/7 等待我的任何服务停止会不会很糟糕?或者我应该使用Quartz 或简单的Timer 每x 时间运行一次检查?
提前致谢
【问题讨论】:
-
如果您在 ServiceController 中很好地管理资源并且只创建了一个实例,我真的不明白为什么有必要关闭它。但是,如果您确实创建了多个在程序中某个时刻不再使用的实例,则应该关闭它们。
-
我只是在想,也许 ServiceController 正在使用其他资源,这使得始终保持与服务的连接变得很糟糕?
-
似乎不太可能。它将保持对服务开放的句柄(这很好),毫无疑问会使用一些内存进行簿记,但没有什么意义。您链接到的问题/答案是关于泄漏实例,而不是长时间保留单个实例。
-
好的,谢谢!能够从远处检查和控制我们的服务真是太好了:)
标签: c# logging windows-services