Le service n'a pas démarré, mais ne commencer?

J'ai écrit un petit service windows que j'ai envie de courir tous les jours sur mon Serveur Windows 2008. Le service est écrit en C#.

  • Le code fonctionne très bien dans des conditions normales
    Formulaire Windows.
  • Le service fonctionne comme il se doit quand j'ai démarrer et l'arrêter à partir de la fenêtre de Gestion des Services (services.msc).

Mais lors de l'exécution sur une ligne de commande avec:

net start Service1

Je reçois les suivantes:

The Service1 service is starting........  The Service1 service could not be started.

The service did not report an error.

More help is available by typing NET HELP:SG 3534.

La chose étrange est bien, le service est toujours en cours d'exécution, dans les Services de l'écran, je vois toujours que le démarrage jusqu'à ce qu'elle soit complètement démarré. Lorsque j'essaie d'arrêter le service après je reçois:

The service could not be controlled in its present state.

More help is available by typing NET HELPMSG 2189

Et puis le service est arrêté. Est-il possible de résoudre ce problème? J'ai déjà réussi à déboguer le service sans aucun problème, le code fonctionne. Mais pendant le débogage, la même chose se produit toujours sur la console de commande, alors que je suis encore capable de débogage supplémentaires.

C'est comme il y a une sorte de délai d'attente sur les onStart() la méthode.. je n'ai aucune idée.. je suis assez nouveau dans les Services Windows (c'est mon premier). J'écris tout mon code dans le onStart() la méthode, c'est peut-être pas la meilleure idée, mais je ne sais pas où d'autre de la taper.

Si quelqu'un pouvait m'aider j'en serais très heureux.

  • Peut-être que vous êtes de retour le mauvais code d'erreur quelque part
  • Johann Blais m'a aidé sur le droit chemin. Après quelques recherches avec les bons termes, j'ai trouvé ceci: "Le problème est que le Démarrage et OnStop les méthodes de contrôle de retour en arrière pour le Gestionnaire de Contrôle de Service dans un délai de 1 minute, pour le Gestionnaire de Contrôle des Services de reconnaître que le service est en cours d'exécution ou arrêté." Mon code a été pris plus d'une minute de travail.