获取有关Windows服务的内部状态的信息

Chr*_*one 6 .net c# windows service state

我有一个Windows服务,我用.NET C#编写.该服务将充当文件处理器.它只是查看File Created事件的目录,并将这些文件添加到队列中进行处理.一个单独的线程从队列中提取文件并处理它们.

我的问题是,是否有办法查询Windows服务以获得其"状态".我希望能够以某种方式查询服务,并查看当前在队列中等待的文件列表等.

我知道这可以通过/ proc文件系统在Linux中完成,我想知道Windows是否有类似的东西.任何提示/指示将不胜感激.

sgm*_*ore 3

如果您正在寻找非 UI 方法(例如,将名称写入文件或标准输出),则可以在服务上使用 ExecuteCommand 方法。

  ServiceController sc = new ServiceController("ServiceName");
  sc.ExecuteCommand(255);
Run Code Online (Sandbox Code Playgroud)

这只是将此命令传递给您的服务,您的服务将通过 OnCustomCommand 处理它

protected override void OnCustomCommand(int command)
{
  base.OnCustomCommand(command);
  if (command == 255
  {
      ... // Your code here
  }
}
Run Code Online (Sandbox Code Playgroud)

您可能需要将队列/服务状态存储在静态变量中,以便可以从 OnCustomCommand 例程访问它。