J'ai un service Windows. Dans la méthode OnStart, j'effectue certaines opérations et si l'une des opérations échoue, je souhaite que le service s'arrête. Dans le bloc Catch je suis en train d'écrire le code mentionné ci-dessous:erreur lors de l'arrêt du service Windows par programme
var srvc = new System.ServiceProcess.ServiceController("Scv1", "localhost");
srvc.Stop();
srvc.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Stopped);
Il fait bien le travail, mais les fenêtres me montre une messagebox:
---------------------------
Services
---------------------------
The xxx service on Local Computer started and then stopped. Some services stop automatically if they are not in use by other services or programs.
---------------------------
OK
---------------------------
que je fais quelque chose de mal ici? Comment puis-je supprimer le messagebox?
ça fait la même chose. arrête le service. problème est la boîte de message que Windows apparaît bcz je l'arrête par programmation. – Asdfg
Oui, il fait la même chose, mais il le fait correctement! Je vous dis que la façon dont vous le faites n'est pas la bonne façon pour un service de s'arrêter par programme, et c'est peut-être la cause de votre problème de boîte de message. Mes services n'ont jamais mis en place une boîte de message comme vous le décrivez quand je les arrête en raison d'un échec au démarrage. Je ne sais pas comment fonctionne ServiceBase, mais dans un service natif, selon la façon dont vous avez défini l'état du service, l'envoi d'une commande stop via le SCM ne fonctionnerait même pas si le service n'acceptait pas les demandes d'arrêt externes. –
Je ne comprends pas ce que vous dites. J'ai changé mon code et je tiens l'instance de mon service dans une variable statique. Comme Mon service hérite de System.ServiceProcess.ServiceBase, lorsque j'appelle Stop, il appelle ServiceBase.Stop parce qu'il en hérite. Il montre toujours la boîte de message. Qu'est-ce que Native Service? – Asdfg