Question

Ma boîte de dev est une machine (x64) Windows 7. J'ai un code (C #, .net 2.0) que dans certaines circonstances, vérifie si un service est en cours d'exécution, puis il arrête.

ServiceController matchedService = //My Service!

//If statements and such

matchedService.Stop();
matchedService.WaitForStatus(ServiceControllerStatus.Stopped);

Maintenant, je peux vérifier MyService est en fait installé et en cours d'exécution. Je peux vous dire que je suis en cours d'exécution Visual Studio 2008 en tant qu'administrateur lors du débogage. Je peux aussi vérifier que, après quelques Si déclarations, je serpentent jusqu'à la partie à .Stoppez () et .WaitForStatus () de la programmation. Je ne sais que si l'étape sur la .Stoppez () appel, le service lui-même ne cesse en cours d'exécution (regardant dans Services , mais il me semble que je devrais peut-être prendre un meilleur outil pour cela. Je « m sûr qu'il ya un certain outil Sysinternals qui pourrait me donner plus d'informations). Comme j'enjambe l'appel, je le vent essentiellement en attendant l'état arrêté .WaitForStatus (). . . pour toujours. Eh bien, je l'ai laissé reposer pendant plus de 15 minutes hier (deux fois) et rien ne se passe. Nous ne faisons jamais à la ligne de code suivante. Il se sent exactement comme l'espace de Bowie Oddity (vous savez la partie dont je parle).

Il y a une des choses lotta sur MyService vous ne savez pas quoi que ce soit au sujet. Les choses que vous ne comprendriez pas. Ce que vous ne pouvait pas. . . permettez-moi de dire clairement ce. Aucun service dépendent MyService et MyService dépend pas d'autres services. Addendum MyOtherService et SonOfMyService les deux semblent se comporter correctement à ce point dans le code. Tous ces services partagent les mêmes caractéristiques (ils sont nos propres services que nous éclos dans un laboratoire secret et ont pas de dépendances). Est-il possible qu'il y ait quelque chose de mal avec le MyService installer ou quelque chose?

Je ne sais que si j'arrête le débogage à ce stade, MyService est toujours répertorié comme en cours d'exécution dans Services (même après avoir frappé rafraîchissement). Si je tente de le redémarrer alors (ou d'exécuter ma demande à nouveau et arriver à ce point), je reçois un message à ce sujet ne pas être en mesure d'accepter des messages de contrôle. Après cela, le service apparaît comme arrêté et je peux commencer normalement.

Pourquoi pas le service étant arrêté? Est-ce une bizarrerie de la victoire 7? Un échec de ma part pour comprendre la ServiceController ou Win services en général?

Était-ce utile?

La solution

Après une enquête plus poussée, je crois que cela est un problème avec le service lui-même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top