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

Windows Communication Foundation .NET Discussion :

Fermer automatiquement un service WCF


Sujet :

Windows Communication Foundation .NET

  1. #1
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut Fermer automatiquement un service WCF


    J'ai une petite question (ça devient fréquent ), je ne sais pas si elle a déjà été postée car j'avoue je ne sais pas dans quelle direction chercher ...
    Donc bon, je voudrais faire un Service WCF mais faire en sorte qu'il soit à l'écoute pendant qu'une application l'utilise et tant que c'est le cas le laisser ouvert, et le fermer lorsqu'il n'est plus utilisé. De même, j'aurai aimé qu'il se ferme automatiquement quand Windows se ferme.
    Comme je n'ai pas envie d'entrer dans les complications des services Windows, mon service est hosté directement dans une application managée. Pour l'instant le code "d'attente" est celui ci :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ServiceHost serviceHost = new ServiceHost(updaterService);
                using (serviceHost)
                {
                    serviceHost.Open();
     
                    while (!finish)
                    {
                        Thread.Sleep(10);
                    }
     
                    serviceHost.Close();
                }
    finish vaut true lorsqu'on en fait la demande explicitement. Mais j'arrive dans ce problème : si l'application est killée, finish ne vaut jamais true et donc mon mini service restera en cours d'exécution infiniment, et si je ferme Windows, ce dernier me dira que mon processus ne veut pas s'arréter ... Comment faire alors pour rendre la libération automatique ? (je pense qu'il ne faudrait pas le fermer au bout de 2 mn sans aucune action vu que c'est un service de mise à jour, l'application peut rester un bon moment sans l'utiliser, celà ne dépend que de l'utilisateur en fait ...)

    Merci d'avance ...

  2. #2
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    il y a des méthodes quand tu créé un service windows qui te permet d intercepter le "service finish" et tu pourrai y appeler le serviceHost.Close() dedans au lieu de faire des boucle d un autre age

  3. #3
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Le truc c'est que j'avais pas envie de faire un service Windows : pour le debugger ça va être plus compliqué, faut l'installer et tout et tout ... ça entraine une petite élévation des difficultés alors qu'à la base je veux faire un programme qui n'est pas compliqué ... tu penses que je devrais quand même m'orienter vers des services ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Sénégal

    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 20
    Points
    20
    Par défaut
    Si c'est pour le debug il faut céer une console application.
    le service est arrêté quand on appui sur la touche Entr.

    Le code: C#

    using (ServiceHost serviceHost = new ServiceHost(typeof(BioService)))
    {
    serviceHost.Open();
    Console.WriteLine("Press <ENTER> to terminate services.");
    Console.ReadLine();
    serviceHost.Close();
    }

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Ce n'est pas pour faire du debug ...

  6. #6
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    pourquoi tu ne créé pas une application WCF qui sera exécuté automatiquement par VS (si tu la configures) et pour la prod un service windows ?

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: 11
    Dernier message: 20/09/2007, 14h51
  3. comment lancer/fermer automatiquement un script Perl?
    Par megapacman dans le forum Langage
    Réponses: 2
    Dernier message: 22/08/2006, 15h10
  4. Réponses: 5
    Dernier message: 16/06/2006, 12h18
  5. Mettre en automatique un service dans un batch
    Par log1c dans le forum Windows
    Réponses: 1
    Dernier message: 02/12/2005, 12h23

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