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

Visual Studio Discussion :

debug application service


Sujet :

Visual Studio

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut debug application service
    Bonjour, bonjour...
    Je fais une application service Windows. Or, pour faire tourner un tel service, c'est tout un boulot (cération de projet d'installation, installation, démarrage etc...) ce qui n'est pas très pratique pour le debug...
    Est-ce qu'il y a moyen de faire tourner une application service en mode debug sur VS2005 ?
    (Je me souviens par exemple d'un objet NTService pour VB6 qui permettait soit de faire un service soit une application, ce qui était bien pratique.....)
    Merci et bonne jounrée !(enfin, ce qu'il en reste)!

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Salut,

    Si le code du projet de service est bien séparé de ton code métier tu dois pouvoir facilement te créer une petite appli winform en plus de ton projet principale qui encapsule ton code métier pour débuguer.

    Sinon une astuce trouvée :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
        * //Dans la classe du service :
        * #if DEBUG
        * private static MyService m_serv = new MyService();
        * #endif
        *
        * static void Main()
        * {
        * #if !DEBUG
        * System.ServiceProcess.ServiceBase[] ServicesToRun;
        * // More than one user Service may run within the same process. To add
        * // another service to this process, change the following line to
        * // create a second service object. For example,
        * //
        * // ServicesToRun = New System.ServiceProcess.ServiceBase[] {new MyService(), new MySecondUserService()};
        * //
        * ServicesToRun = new System.ServiceProcess.ServiceBase[] { new MyService() };
        * System.ServiceProcess.ServiceBase.Run(ServicesToRun);
        * #else
        * m_serv.OnStart (new string[0]);
        * System.Windows.Forms.Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
        * System.Windows.Forms.Application.Run (new dbgForm());
        * #endif
        * }
        *
        * #if DEBUG
        * private static void Application_ApplicationExit( object sender, EventArgs e)
        * {
        * m_serv.OnStop();
        * }
        * #endif
        *
        *
        *
        *
        *
        * //Dans un fichier à part :
        * #if DEBUG
        * internal class dbgForm : System.Windows.Forms.Form
        * {
        * public dbgForm ()
        * {
        * this.Width = 400;
        * this.Height = 20;
        * this.Text = "MyService (Debug Mode)";
        * this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
        * }
        * }
        * #endif
    En tout les cas l'idée est d'avoir un autre projet de type exe qui te permet de débuguer.

  3. #3
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Ben oui, t'as raison...
    Ce que je crains toujours, c'est que certains éléments de l'application ne réagissent pas de la même manière dans une application WindowsForm que dans un service... En tous cas, merci pour l'info. L'astuce en lien est pas mal mais un peu lourde...

    Et que la vie vous soit agréable en cette après-midi... Pas de folies et à +

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Ce qui peut surtout changer c'est le compte sous lequel s'exécute ton code effectivement, faut y faire attention.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    Attention quand tu fait tes tests dans une appli WinForm standard et dans un Service...

    Il y a effectivement des comportements qui peuvent varier... Par exemple le choix de certains composants, tu les choisis comme d'habitude quand tu fait du winform... ca marche pendant les tests, et plus du tout en prod... c'est le cas des objets Timer (System.Windows.Form.Timer) Ca marche pendant les tests en winforms et pas du tout en prod... (pas de pompage de la queue de messages windows)

    Mais une fois que tu a fait abstraction et éviter tous ces éceuils... ya plus aucun problème.

  6. #6
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Je pense qu'en principe, tout ce qui vient de System.Windows.Forms ne devrait pas être utilisé dans un service ?
    (Pour les timers il y a les System.Timers.Timer qui fonctionnent très bien en service)
    Merci tout le monde !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Application Service Windows
    Par Neo41 dans le forum Visual C++
    Réponses: 9
    Dernier message: 10/05/2007, 10h22
  2. Comment créer une application Service qui lance un .exe.
    Par yosthegost dans le forum Delphi
    Réponses: 5
    Dernier message: 18/05/2006, 11h37
  3. Inscrire une application service ds le journal d'évènements
    Par laadhar dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 30/01/2006, 21h01
  4. Debug application multi thread
    Par Razowsky dans le forum MFC
    Réponses: 1
    Dernier message: 03/05/2005, 18h14
  5. Application Service
    Par SamDaKap dans le forum C++Builder
    Réponses: 7
    Dernier message: 17/02/2003, 19h46

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