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 :

Déclenchement d'un évènement à une heure donnée


Sujet :

C#

  1. #1
    Membre habitué Avatar de Vonziz
    Inscrit en
    Décembre 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 215
    Points : 131
    Points
    131
    Par défaut Déclenchement d'un évènement à une heure donnée
    Bonjour,

    Je travaille actuellement sur un programme de monitoring système qui sera lancé 24h/24 pour faire des traitements.

    A une heure précise, je souhaiterais lancer un traitement complexe sur un fichier donné.

    Ma question est donc : Existe-t-il un événement C# auquel on peut s'inscrire qui permettrait d'exécuter du code à une heure donnée?

    Merci d'avance pour vos éclaircissements.

    Cordialement

  2. #2
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    salut,

    j'ai utilisé un Timer déclenché toutes les 1sec qui verifiait la plus petite valeur d'une DataGrid (la colonne stockait un ticks précisant le prochain déclenchement) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // executé 1 fois par seconde
    private void timer1_Tick(object sender, EventArgs e)
    {
        if (dgListe.Rows.Count > 0) {
            long ticks = Convert.ToInt64(dgListe.Rows[0].Cells["clTicks"].Value);
            if (DateTime.Now.Ticks >= ticks) {
              // DECLENCHEMENT EVENEMENT
              // maj colonne ou effacement ligne 
              // trie DataGrid en utilisant clTicks
            }
        }
    }
    la DataGrid contenait les infos sur tous les évenements :
    -ticks date début
    -ticks date fin
    -type action
    - .... etc

  3. #3
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Points : 443
    Points
    443
    Par défaut
    Tu peux faire ça de plusieurs manières. Je pense qu'une tâche planifiée serait fortement appropriée pour cela. Il te faut juste créer un exe (console par exemple).

    Sinon, tu peux faire un service Window, et utiliser un timer effectivement. Peut-être un peu plus long à réaliser ...

  4. #4
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Citation Envoyé par Vonziz Voir le message
    ...Ma question est donc : Existe-t-il un événement C# auquel on peut s'inscrire qui permettrait d'exécuter du code à une heure donnée?
    Un timer

  5. #5
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 254
    Points
    28 254
    Par défaut
    Citation Envoyé par Paul Musso Voir le message
    Tu peux faire ça de plusieurs manières. Je pense qu'une tâche planifiée serait fortement appropriée pour cela. Il te faut juste créer un exe (console par exemple).

    Sinon, tu peux faire un service Window, et utiliser un timer effectivement. Peut-être un peu plus long à réaliser ...
    +1, c'est fait pour ca. le timer est une solution mais c'est pour un temps relatif par pour une heure donnée. c'est donc la solution de paul qui est la plus propre

  6. #6
    Membre habitué Avatar de Vonziz
    Inscrit en
    Décembre 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 215
    Points : 131
    Points
    131
    Par défaut
    Donc, impossible de faire autrement que de le dissocier de mon programme de monitoring actuel?

  7. #7
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Points : 443
    Points
    443
    Par défaut
    Bah si ton programme de monitoring garantie que ton code sera executé au moment voulu, je vois pas d'inconvénient. Pour cela, il faut juste qu'il soit en cours d'exécution ...

    C'est quoi ton programme de monitoring ? du Winform, Asp.net, services (n'importe quel type), ...

    Dans tous les cas, si c'est une appli cliente, je te conseille la tâche planifiée.

  8. #8
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 254
    Points
    28 254
    Par défaut
    Citation Envoyé par Vonziz Voir le message
    Donc, impossible de faire autrement que de le dissocier de mon programme de monitoring actuel?
    si il y a toujours moyen. j'imagine que ta tâche est d'envoyer un rapport par mail ou quelque chose du genre. Ce ne serait pas absurde de générer le rapport dans un dossier, et faire une tâche planifiée qui envoie la piece jointe.
    Le problème, c'est que c'est configurable que par l'admin de la machine.


    Tu peux aussi mettre une heure dans un fichier app.config et quand l'appli se lance, elle lance un timer avec tick = heure-heure actuelle, ce qui reviendra au même.
    A toi de voir, si tu préfères n'avoir qu'une appli ou non

  9. #9
    Membre habitué Avatar de Vonziz
    Inscrit en
    Décembre 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 215
    Points : 131
    Points
    131
    Par défaut
    Le programme de monitoring sera lancé H24 donc il couvrira forcément l'heure d'exécution de mon traitement.

    Ce programme remplit des fichiers de données et chaque jour, un batch vient prendre ces fichiers de données et mon programme de monitoring doit remplir d'autres fichiers à l'heure donné. C'est comme si tu mets un verre sous un robinet et que tu changes de verre tous les jours. :-)

    C'est une application console.

  10. #10
    Membre habitué Avatar de Vonziz
    Inscrit en
    Décembre 2006
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 215
    Points : 131
    Points
    131
    Par défaut
    J'ai trouvé une solution au final. A chaque fois que je remplit les fichiers :

    - je teste si l'heure (paramètre de l'application) est dépassée,
    - si c'est le cas, je n'écris plus dans mes fichiers actuels et j'en créé des nouveaux avec une date postérieure,
    - sinon j'écris toujours dans les mêmes à la date du jour.

    Merci de votre aide

    Résolu.

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

Discussions similaires

  1. faire tourner un script à une heure donnée
    Par nebil dans le forum Langage
    Réponses: 2
    Dernier message: 03/07/2006, 12h30
  2. Boot à une heure donnée
    Par Pollux dans le forum Ordinateurs
    Réponses: 10
    Dernier message: 28/02/2006, 08h47
  3. Réponses: 13
    Dernier message: 21/12/2005, 16h18
  4. Réponses: 14
    Dernier message: 17/11/2005, 17h16
  5. [Oracle 10g] Envoi mail avec PJ à une heure donnée
    Par djoule6 dans le forum Oracle
    Réponses: 5
    Dernier message: 25/10/2005, 11h51

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