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 :

Comment un service peut connaître son état de démarrage ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut Comment un service peut connaître son état de démarrage ?
    Salut,

    j'ai créé un service Windows à démarrage manuel.
    Dans certains cas (données à traiter absentes, ...) le service s'arrête très vite, et dans ce cas un message de warning qui apparaît à l'écran :
    Le service xxx a démarré puis s'est arrêté. Certains services peuvent s'arrêter automatiquement s'ils n'ont aucune tâche à effectuer, par exemple, le service des alertes et les journaux de performances.
    J'aimerais que ce message n'apparaisse pas. (d'autant que le service doit être lancé à distance par un ordonnanceur)

    Comment faire ?


    rq : j'ai pensé ajouter dans le OnStop() une temporisation du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            protected override void OnStop()
            {
                Log.WriteLogEntry("Arrêt du service d'Import Auchan RP");
    
                UInt64 i = UInt64.MinValue;
                while (mon_service.état != System.ServiceProcess.ServiceControllerStatus.Running && i++ < UInt64.MaxValue)
                {
                    System.Threading.Thread.Sleep(1000);
                }
                
                base.OnStop();
            }
    mais je ne sais pas comment récupérer de "pointeur" sur le service ???

  2. #2
    Membre éclairé
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 421
    Par défaut
    A priori pour avoir l'état du service, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                ServiceController srvController;
                srvController = new ServiceController("xxx");
    ...
    état = srvController.Status
    Mais j'obtiens bien l'état 'Running' et donc je ne rentre jamais dans ma boucle.

    Donc si je comprends bien, le problème serait plutôt que ce warning apparaît si le Stop du service advient trop près du Start ? Il y a peut-être une temporisation Windows à régler ???

    PS : en attendant j'ai mis System.Threading.Thread.Sleep(3000); à la place de la boucle, c'est pas terrible, d'autant que ça doit différer selon les machines, mais j'ai pas trouvé mieux. Donc si vous avez une idée... (peut-être complètement différente des miennes !)

Discussions similaires

  1. Squid: comment l'utilisateur peut changer son mot de passe?
    Par supInfo22 dans le forum Sécurité
    Réponses: 0
    Dernier message: 16/09/2011, 18h00
  2. Comment un User peut changer son mot de passe ?
    Par krilas dans le forum Forms
    Réponses: 2
    Dernier message: 12/08/2009, 14h19
  3. Réponses: 5
    Dernier message: 08/02/2007, 16h22
  4. Réponses: 2
    Dernier message: 10/04/2006, 13h08
  5. Comment un client peut Passer son IOR au serveur ?
    Par ratapapa dans le forum CORBA
    Réponses: 2
    Dernier message: 14/12/2005, 00h19

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