ServiceController.ExecuteCommand:如何获取数据

时间:2013-01-04 14:41:51

标签: .net windows-services servicecontroller

在.NET中,ServiceController类允许您使用ExecuteCommand方法向服务发送自定义命令。

我希望能够查询服务的状态(自定义状态概念,而不是“已启动/已停止”类别)。我希望使用类似于ExecuteCommand的内容来调用服务并获得指示状态的返回值是直截了当的。 ServiceController中是否有某些内容可以让我这样做?

假设没有,我想我必须使用某种外部进程间通信技术(例如,服务将其状态写入数据库或消息队列)。为简单起见,您会推荐什么?

2 个答案:

答案 0 :(得分:1)

ServiceController肯定没办法。离开WCF可能是最好的选择。这里的教程:http://www.switchonthecode.com/tutorials/wcf-tutorial-basic-interprocess-communication

答案 1 :(得分:0)

Windows提供了许多进程间通信(IPC)。 @David是对的,ServiceControllers无法执行此操作,他很高兴为您指出WCF,它是一个基于IPC功能的基础。使用IPC,您可以在ExecuteCommand调用后协调您的服务和应用程序。

如果你不想去WCF你可以实现一个管道(匿名管道似乎适合这种情况)或使用Windows套接字。

在IPC上查看来自MSDN的this link,它是您可以采取的多种途径的一个很好的开端。