6

.NET C# で記述している Windows サービスがあります。このサービスは、ファイル プロセッサとして機能します。File Created イベントのディレクトリを監視し、これらのファイルをキューに追加して処理します。別のスレッドがキューからファイルを取得して処理します。

私の質問は、Windows サービスにクエリを実行してその「状態」を取得する方法があるかどうかです。何らかの方法でサービスにクエリを実行し、現在キューで待機しているファイルのリストなどを表示できるようにしたいと考えています。

これは /proc ファイル システムを介して Linux で実行できることを知っています。ヒント/ポインタは大歓迎です。

4

3 に答える 3

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 ルーチンからアクセスできるように、キュー/サービスのステータスを静的変数に格納する必要がある場合があります。

于 2012-05-21T18:40:33.017 に答える
2

状態にアクセスするために必要なメソッドを使用して、Windows サービス内にホストされた WCF サービスを作成できます。

http://msdn.microsoft.com/en-us/library/ms733069.aspx

于 2012-05-21T18:05:22.233 に答える
0

WCFはそれを行うのに適しています。特に、Windowsサービス内でホストできます。あなたの場合は、WCFでXML-RPCを使用するのが理にかなっているかもしれません

于 2012-05-21T18:16:17.630 に答える