[英]How to get a Windows Service custom Status? [C++/C#]
我创建了一个C#Windows服务(Serv.exe),该服务负责应正在运行的应用程序(A.exe)的请求执行各种任务,其中一些可能会花费很长时间,因此我需要一种方法来了解我从调用应用程序(A.exe)请求的操作(在服务上运行)的状态。
目前,我开始实现此目的的方式是使用ControlService(句柄,命令,状态)向服务发送自定义命令以执行所请求的任务,我也使用QueryServiceStatus(句柄,状态)来获取状态来自SCM的服务-因此,基本的管道就在那里并且可以正常工作。
现在我遇到的问题是,在发送我的ControlService命令(可以正常工作)之后,调用应用程序(A.exe)保持运行,并且在某个时候它需要知道它所请求的服务任务是否完成-因此,我正在寻找一种查询服务以报告自定义状态的方法,而不是实际服务的标准运行,停止,挂起,暂停状态,而是我使用ControlService()请求发出的请求状态。
这是可能吗? 任何帮助或提示将不胜感激。
谢谢,
对我来说,很好的方法是设置一个外部队列,例如MSMQ或数据库表。 这些代码易于编写,支持应用程序和服务之间的双向通信,甚至允许多个应用程序甚至通过网络与一个服务进行通信,并允许您关闭应用程序,并在消息完整的情况下启动它。 另外,调试起来更容易,因为您可以检查流量,尤其是在使用数据库并将消息标记为已读而不是删除消息的情况下。 当您不想使用重量级数据库或不想担心是否已安装MSMQ或正在运行MSMQ时,通过System.Data.Sqlite包装器使用SQLite十分适合。
另一个选择是将逻辑放入WCF服务中,并通过HTTP或TCP与之通信。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.