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

Services Windows Discussion :

Problème de timer dans un service window


Sujet :

Services Windows

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 36
    Points : 21
    Points
    21
    Par défaut Problème de timer dans un service window
    Bonjour à tous,

    Je suis actuellement en train de développer un service window qui démarre aprés installation mais mon System.Timers.Timer ne semble pas déclencher l'évenement Elapsed. Voici mon code :

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    using System.Timers;
    using System.IO;
    using System;
     
    public partial class Export : ServiceBase
      {
        #region Properties
     
        private Timer Watcher { get; set; }
        private MyProject.Parameters Service { get; set; }
     
        #endregion
        #region Constructors
     
        public Export()
        {
          InitializeComponent();
     
          Service = new Core.Services.Parameters();
     
          Watcher = new Timer(1000);
          Watcher.Elapsed += new ElapsedEventHandler(Watcher_Elapsed);
        }
     
        #endregion
        #region Overriden methods
     
        protected override void OnStart(string[] args)
        {
          Watcher.Start();
        }
        protected override void OnStop()
        {
          Watcher.Stop();
        }
     
        #endregion
        #region Event methods
     
        private void Watcher_Elapsed(object sender, ElapsedEventArgs e)
        {
          throw new Exception("Watcher_Elapsed");
          LaunchExport();
        }
     
        #endregion
        #region Methods
     
        private void LaunchExport()
        {
          throw new Exception("LaunchExport");
          MyProject.ExportParameters parameters = Service.GetParameters();
     
              Service.UpdateLastExport(DateTime.Now);
          }
        }
     
        #endregion
      }
    A noter que les Exceptions sont intensionnels pour voir si j'atteint les différentes méthodes.

    Quelqu'un peut il m'aider, je n'ai plus d'idées ?

    Merci d'avance,
    (frk 2, vs2010)

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Points : 174
    Points
    174
    Par défaut
    As tu deboggé pour vérifier que tu ne passais pas dans ta fonction onStart(), peut être que tu ne lance tout simplement pas le timer?
    Pour debogger un service windows il faut que tu choisisses "attacher au processus" dans le menu deboggage de VS.

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    Je rentre bien dans le onstart() de mon service. Si je met une exception dans onStart() mon service ce plante au démarrage et je retrouve cette erreur dans le journal d'évenement. Je ne vais pas plus loin.

    J'ai pensé à une histoire de thread .... j'en sais rien en faite

    C'est déprimant !

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 36
    Points : 21
    Points
    21
    Par défaut
    Bon bah ça ne fonctionne pas je suis triste.


    J'ai modifier mon implémentation faute de mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while (System.Threading.Thread.CurrentThread.IsAlive)
    {
    ......
    System.Threading.Thread.Sleep(60000);
    }

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Points : 174
    Points
    174
    Par défaut
    C'est vrai que c'est bizarre, mais essaye quand même le deboggage:met des points d'arrêt dans le constructeur, le onStart , etc.Supprime les exceptions.

  6. #6
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Points : 4 574
    Points
    4 574
    Par défaut
    Bonjour,

    Et si tu fais comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        protected override void OnStart(string[] args)
        {
            Watcher = new Timer(10000); // Timer de 10 secondes.
            Watcher.Elapsed +=new ElapsedEventHandler(Watcher_Elapsed);
            Watcher.Start();
        }

Discussions similaires

  1. Timer dans un service windows pour création d'un serveur
    Par amine_taz dans le forum PureBasic
    Réponses: 1
    Dernier message: 24/02/2014, 13h34
  2. [Débutant] Problème atteinte de ma BD via web services WCF Hébergé dans un service windows
    Par floryndas dans le forum Services Web
    Réponses: 1
    Dernier message: 18/11/2013, 12h48
  3. Problème python lancer un .exe dans son service windows python
    Par leyer dans le forum Général Python
    Réponses: 1
    Dernier message: 02/04/2010, 05h07
  4. timer dans un service windows
    Par yochima dans le forum C#
    Réponses: 5
    Dernier message: 20/08/2009, 11h57
  5. Réponses: 5
    Dernier message: 28/12/2007, 10h56

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