Obtenir des informations sur l’état interne du service Windows

J’ai un service Windows que j’écris en .NET C #. Le service va agir en tant que processeur de fichiers. Il surveille simplement un répertoire pour les événements créés par fichier et ajoute ces fichiers à une queue pour le traitement. Un thread séparé extrait les fichiers de la queue et les traite.

Ma question est de savoir s’il existe un moyen d’interroger le service Windows pour obtenir son “état”. Je voudrais pouvoir interroger le service d’une manière ou d’une autre et voir une liste des fichiers actuellement en attente dans la queue, etc.

Je sais que cela peut être fait sous Linux via le système de fichiers / proc et je me demandais s’il y avait quelque chose de similaire pour Windows. Tous les conseils / conseils seraient grandement appréciés.

Si vous recherchez une méthode autre que l’interface utilisateur (par exemple, pour écrire les noms dans un fichier ou sur une sortie standard), il est possible d’utiliser la méthode ExecuteCommand sur le service.

ServiceController sc = new ServiceController("ServiceName"); sc.ExecuteCommand(255); 

Cela transmet simplement cette commande à votre service et votre service le gérera via OnCustomCommand.

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

Vous devrez peut-être enregistrer l’état de votre queue / service dans une variable statique afin de pouvoir y accéder à partir de la routine OnCustomCommand.

Vous pouvez créer un service WCF hébergé à l’intérieur du service Windows avec les méthodes dont vous avez besoin pour accéder à l’état.

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

WCF serait bien de le faire, en particulier il peut être hébergé dans le service Windows. Peut-être dans votre cas, il est logique d’utiliser XML-RPC avec WCF