2009-11-20 2 views
1

J'ai un programme qui est un service Windows. Il est démarré par la fonction StartServiceCtrlDispatcher. C'est le serveur de réseau qui accepte les entrées de l'utilisateur comme commande à des fins de contrôle. Maintenant, je veux qu'il puisse être arrêté par les utilisateurs, c'est-à-dire lorsque l'utilisateur tape une commande "quitter", le service s'arrêtera. (Ne vous inquiétez pas de la façon dont le service peut être redémarré.) Puis-je simplement utiliser la fonction "exit" dans la bibliothèque standard ou dois-je utiliser la fonction "ControlService"?Effet de la fonction de sortie dans les programmes de service Windows

Répondre

2

Vous devez utiliser la fonction ControlService() pour arrêter le service, puis revenir du flux de programme normalement si cela doit également provoquer la fermeture du processus.

ControlService Function @ MSDN

exit() entraînera la fin du processus, ce qui va tuer définitivement un processus qui héberge 1 service. Cependant, ceci n'est pas souhaitable pour arrêter un service dans un processus qui héberge plus d'un service. En outre, il n'est pas défini si d'autres observateurs surveillant votre service recevront une notification gracieuse de l'arrêt du service si vous utilisez exit(). D'autres bibliothèques d'exploitation dans votre processus que vous avez peut-être chargées peuvent également ne pas s'arrêter correctement si vous utilisez exit().

exit, _exit @ MSDN

Questions connexes