我有一个用.NET C#编写的Windows服务。该服务将充当文件处理器。它只是查看File Created事件的目录,并将这些文件添加到队列中进行处理。一个单独的线程从队列中提取文件并处理它们。
我的问题是,是否有办法查询Windows服务以获取其“状态”。我希望能够以某种方式查询服务,并查看当前在队列中等待的文件列表等。
我知道这可以通过/ proc文件系统在Linux中完成,我想知道Windows是否有类似内容。任何提示/指示将不胜感激。
答案 0 :(得分:3)
如果您正在寻找非UI方法(例如,将名称写入文件或标准输出),则可以在服务上使用ExecuteCommand方法。
ServiceController sc = new ServiceController("ServiceName");
sc.ExecuteCommand(255);
这只是将此命令传递给您的服务,您的服务将通过OnCustomCommand处理它
protected override void OnCustomCommand(int command)
{
base.OnCustomCommand(command);
if (command == 255
{
... // Your code here
}
}
您可能需要将队列/服务状态存储在静态变量中,以便可以从OnCustomCommand例程访问它。
答案 1 :(得分:2)
您可以使用访问该状态所需的任何方法在Windows服务内创建托管WCF服务。
答案 2 :(得分:0)
WCF会很好,特别是它可以托管在Windows服务中。在你的情况下,使用XML-RPC with WCF
可能是有意义的