[Résolu] [VB.NET] Récupérer le code de sortie d'un service Windows

Récupérer le code de sortie d'un service Windows [Résolu] [VB.NET] - C#/.NET managed - Programmation

Marsh Posté le 22-12-2008 à 09:50:12    

Bonjour,
 
Dans une application tierce, je lance un service Windows personnalisé.
 
Je souhaite que ce service renvoie des codes, et qu'ils soient analysées par l'application tierce.
 
Ma question est donc double :
 
- comment renvoyer des codes avec le service, dans la fonction onStop() par exemple ?
- comment recevoir ce code dans mon application qui lance le service ?
 
J'ajoute quelques informations :
 
- Le service que je lance doit obligatoirement prendre des paramètres. Je suis donc obligé de le lancer via un System.ServiceProcess.ServiceController, avec un tableau d'arguments. Je ne peux donc pas utiliser le System.ServiceProcess.ServiceBase avec la méthode Run, qui ne permet pas le passage d'arguments.
 
- J'ai essayé une colaboration infructueuse entre System.ServiceProcess.ServiceController et System.ServiceProcess.ServiceBase, le premier pour lancer le service, le second pour capter le ExitCode.
 
Voici mon code côté application tierce :
 
Sur un clic ...

Code :
  1. Public ServiceAlias As New System.ServiceProcess.ServiceController
  2.     Public EcouteService As New System.ServiceProcess.ServiceBase
  3.     Public TabArgs(1) As String
  4.     Private Sub Bouton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Bouton.Click
  5.         Dim LeBouton As Windows.Forms.Button = sender
  6.         ' Lancement du service avec l'action verifie pour l'exe cliqué
  7.         TabArgs(0) = "verifie"
  8.         TabArgs(1) = LeBouton.Tag
  9.         ServiceAlias.MachineName = "."
  10.         ServiceAlias.ServiceName = "Alias"
  11.         EcouteService.ServiceName = "Alias"
  12.         ServiceAlias.Start(TabArgs)
  13.         While Not ServiceAlias.Status.Equals(System.ServiceProcess.ServiceControllerStatus.Stopped)
  14.             ServiceAlias.Refresh()
  15.         End While
  16.         MsgBox(EcouteService.ExitCode)
  17.     End Sub


 
 
et dans mon service :

Code :
  1. Protected Overrides Sub OnStop()
  2.         Me.ExitCode = 42
  3.         ' Ajoutez ici le code pour effectuer les destructions nécessaires à l'arrêt de votre service.
  4.     End Sub


 
Le MsgBox de l'application tierce me renvoit inlassablement 0.
 
Merci pour votre aide.


Message édité par clem_71 le 15-01-2009 à 13:52:57
Reply

Marsh Posté le 22-12-2008 à 09:50:12   

Reply

Marsh Posté le 22-12-2008 à 22:49:35    

j'y connais strictement rien en .net mais ton code me parait bizarre, ton EcouteService est lié à l'autre via le ServiceName ?? je comprend pas trop ce que t'essaye de faire, ca me parait bizarre, mais ensuite tu ne lance que l'autre ServiceAlias, c'est peut etre celui la qui t'interesse nan ? MsgBox(ServiceAlias.ExitCode) ?


Message édité par satirik le 22-12-2008 à 22:50:29
Reply

Marsh Posté le 23-12-2008 à 09:37:51    

Bonjour,
 
A priori oui, pour la classe ServiceBase (Cf. EcouteService dans mon code), il suffit de stipuler le ServiceName pour pouvoir gérer le service.
 
Ta deuxième remarque est pertinente, mais la classe ServiceController (Cf. ServiceAlias dans mon code) ne dispose pas de la propriété ExitCode.

Reply

Marsh Posté le 05-01-2009 à 09:33:30    

Bonjour, et mes meilleurs à tous et à toutes pour cette nouvelle année.
 
Je reviens à la charge pour ma question :)
 
Merci

Reply

Marsh Posté le 15-01-2009 à 13:53:26    

Bonjour,
 
Résolu, on ne peut pas.
 
Il faut utiliser les canaux nommés "named pipes"

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed