IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Échec au démarrage d'un Service


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 6
    Par défaut Échec au démarrage d'un Service
    Bonjour;

    Je viens vous poser une question car il s'avère que je ne trouve pas de solution réelle a mon problème : j'ai créé un Services (Via Visual Studio) qui démarre 3 threads lors du onStart.

    Les 3 threads sont des boucles; deux sont des boucles d'écoutes TCP la dernière est une tâche s'executant toutes les 10 secondes. Normalement, les thread ne se ferme pas car ils sont dans un "while (true)".

    Le soucis, est que j'obtient ce message (qui apparait instantanément.) :



    Quand j'ouvre l'observateur d'evenements, voici le log complet que je peux voir : http://befaster.fr/Imgs/Error2.png

    Je tiens a préciser qu'en local (Win7 Pro x64 SP1) le service ne s'execute pas :



    J'ai suivi à la lettre le "Walkthrough" : http://msdn.microsoft.com/en-us/libr...v=vs.100).aspx

    J'utilise bien un installeur, j'ai bien vérifié que les élements créés dans le "ProjectInstaller" ai le même Service Name.

    Je sèche complètement.

    Voici le code onStart de mon service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
      protected override void OnStart(string[] args)
            {
                try
                {
                    FirstStartRoutine();
                    TcpServer = new Thread(new ThreadStart(tcpListenerThread));
                    TcpServer.Start();
                    PloofLog.WriteEntry("Ploof Tcp Listening : Started successfully", EventLogEntryType.Information);
                }
                catch (Exception ex)
                {
                    PloofLog.WriteEntry("Ploof Tcp Listening : Not started; StackTrace \n : " + ex.ToString(), EventLogEntryType.Error);
                }
     
                try
                {
                    ThUpdateService = new Thread(new ThreadStart(updateService));
                    ThUpdateService.Start();
                    PloofLog.WriteEntry("Ploof Update Tcp Listening : Started successfully", EventLogEntryType.Information);
                }
                catch (Exception ex)
                {
                    PloofLog.WriteEntry("Ploof Update Tcp Listening : Not started; StackTrace \n : " + ex.ToString(), EventLogEntryType.Error);
                }
     
                try
                {
     
                    DecrementerService = new Thread(new ThreadStart(decrementerThread));
                    DecrementerService.Start();
                    PloofLog.WriteEntry("Ploof DecrementerService : Started successfully", EventLogEntryType.Information);
                }
                catch (Exception ex)
                {
                    PloofLog.WriteEntry("Ploof DecrementerService : Not Started; StackTrace \n : " + ex.ToString(), EventLogEntryType.Error);
                }
     
            }
    Une idée ?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Il doit y avoir quelque chose qui dure trop longtemps dans ton OnStart... Cette méthode doit normalement s'exécuter très rapidement, sinon le gestionnaire de service considère que le démarrage du service a échoué.

    A priori ce n'est pas la création des threads, et je suppose (j'espère !) que ce n'est pas non plus l'écriture dans les logs, donc par élimination ça doit être ta méthode FirstStartRoutine qui prend trop de temps. Essaie de l'optimiser, et si ce n'est pas possible exécute la dans un autre thread.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 6
    Par défaut
    Merci de la réponse;

    Alors je viens de commenter la routine : et en commentant la routine, j'ai toujours le message.
    Une autre idée ?

    EDIT : Rectification, après avoir retiré la Routine, le service semble se lancer.
    Cependant il me dit qu'il s'est arrêté tout de suite.
    Je suppose que je dois avoir des choses écrites dans les Logs, je vais aller les lire et poster ici ce qu'ils contiennent

    Voilà le log :
    Le service ne peut pas être démarré. System.IO.IOException: Le chemin réseau n’a pas été trouvé.

    à Microsoft.Win32.RegistryKey.Win32ErrorStatic(Int32 errorCode, String str)
    à Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(RegistryHive hKey, String machineName, RegistryView view)
    à System.Diagnostics.EventLogInternal.GetEventLogRegKey(String machine, Boolean writable)
    à System.Diagnostics.EventLogInternal.FindSourceRegistration(String source, String machineName, Boolean readOnly, Boolean wantToCreate)
    à System.Diagnostics.EventLogInternal.SourceExists(String source, String machineName, Boolean wantToCreate)
    à System.Diagnostics.EventLogInternal.VerifyAndCreateSource(String sourceName, String currentMachineName)
    à System.Diagnostics.EventLogInternal.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData)
    à System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type)
    à PloofServer.PloofServer.OnStart(String[] args)
    à System.ServiceProcess.Service...

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Apparemment c'est l'écriture du log qui pose problème... comment as-tu créé PloofLog ?

Discussions similaires

  1. Démarrage automatique des services
    Par barrique dans le forum Windows XP
    Réponses: 2
    Dernier message: 29/07/2008, 09h40
  2. Réponses: 2
    Dernier message: 03/08/2006, 09h37
  3. pb de démarrage de JRun Service Manager
    Par lalyly dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 18/10/2005, 15h11
  4. Planifier le démarrage d'un service Window
    Par tscoops dans le forum Windows XP
    Réponses: 2
    Dernier message: 29/03/2005, 14h56
  5. Récupérer le type de démarrage d'un service
    Par Nathan dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 09/04/2004, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo