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 :

Du "cron" pour mes méthodes ?


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Du "cron" pour mes méthodes ?
    Bonsoir les développeurs

    J'aimerai faire une sorte de service "cron" pour mes méthodes (enfin, certaines).
    Je m'explique : je stock la date sur ma base de données (sqlite) et j'aimerai que mon service exécute la méthode demandée à la date voulue.
    J'aimerai donc que les méthodes soient exécutées à la date demandée.

    Je ne sais pas par où commencer, j'ai cherché un peu sur le web mais je n'ai rien trouvé...

    Je pensais à un Design Pattern observable/observateur qui notifie les observateurs de la date d'exécution, puis l'observateur s'endort* jusqu'au moment fatidique, ou alors ?


    * Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while (tempsExecution >= tempsActuel)
    {
        Thread.Sleep(temsExecution - tempsActuel);
    }
    Merci de vos réponses

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    tu peux faire un timer qui vérifie toutes les minutes (ou toutes les secondes, ou toutes les 10 secondes, selon la précision voulue...) si la date d'exécution de la tâche est atteinte (ou dépassée). Si oui, tu exécutes la tâche et tu mets éventuellement à jour la date de prochaine exécution (si c'est une tâche répétitive)

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Algérie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 59
    Points : 73
    Points
    73
    Par défaut La date change t elle souvent ?
    Bonjour,
    Si la date de déclenchement de la méthode ne change pas souvent ... il vaut mieux la sauvegarder au niveau d'une variable globale et d'exécuter ta méthode en comparaison sur cette valeur ...Une fois que tu décides de changer la date tu changeras avec la valeur de la variable en même temps que celle de la base ( un delegate et une classe eventArgs feraient l'affaire) ...
    En résumé, la réponse est réduite à cela, une solution serait de gérer ces date en parallèle avec la base ...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    En fait, les événements sont nombreux et fréquents, et les dates aléatoires, c'est pour ça que je les stock dans une base de données. Et c'est pour ça que je pensais à un système de notification avec l'observer/observable.

    C'est-à-dire en parallèle ?

    merci de votre intérêt

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Etant donné qu'une base de donnée SQL ne peut en général "pusher" des informations non demandée vers un client, il va falloir que ton programme demande à la base de donnée quelles sont les prochaines actions à exécuter et quand.

    Il faut donc créer une boucle qui périodiquement va lire dans la base de donnée les prochaines actions à exécuter et enfin une autre boucle chargée de parcourir les actions en attente afin de voir lesquelles doivent être lancées. La période de chaque boucle, doit, comme on l'a déjà dit, dépendre de la précision nécessaire.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    D'accord, merci pour l'aide

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

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