在.NET中,ServiceController
类允许您使用ExecuteCommand
方法向服务发送自定义命令。
我希望能够查询服务的状态(自定义状态概念,而不是“已启动/已停止”类别)。我希望使用类似于ExecuteCommand
的内容来调用服务并获得指示状态的返回值是直截了当的。 ServiceController
中是否有某些内容可以让我这样做?
假设没有,我想我必须使用某种外部进程间通信技术(例如,服务将其状态写入数据库或消息队列)。为简单起见,您会推荐什么?
答案 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,它是您可以采取的多种途径的一个很好的开端。