2011-04-27 2 views
5

J'ai une application complexe qui peut s'exécuter en tant que service Windows et en tant qu'application de console. J'utilise principalement le démarrage de la console pour le débogage. Lorsque j'appuie sur Ctrl + C sur la console, l'application s'arrête immédiatement (le processus se termine).Le service est arrêté mais le processus reste pendant une minute

Lorsque j'exécute l'application en tant que service et que je choisis de l'arrêter, MMC indique immédiatement que le service est arrêté. Cependant, le processus est toujours en cours et prend environ une minute pour s'arrêter. Je n'ai aucun problème à prendre le temps mais j'aimerais que MMC attende comme pour d'autres services. Actuellement, je peux redémarrer le service alors que l'ancien processus est toujours en cours d'exécution, ce qui génère des erreurs avec des ressources exclusives. De même, "restart" dans MMC ne fonctionne pas car il n'attend pas la fin du processus.

Comment faire en sorte que mon processus soit en attente ou comment puis-je savoir quels threads/processus/méthodes prennent le temps?

Répondre

2
+0

liens très utiles. Je suis surpris de ne pas pouvoir les trouver. J'ai essayé les informations du premier lien et j'accepterai la réponse après que j'ai pu valider que cela fonctionne. – ZoolWay

+0

Oui ça a marché. Gérer l'arrêt de tous les threads dans 'OnStop()' l'a fait pour moi - comme proposé dans le premier lien sur les services .NET. THX! – ZoolWay

Questions connexes