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 :

Bonne pratique Thread.sleep()


Sujet :

C#

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Bonne pratique Thread.sleep()
    Bonjour,

    J'ai une tâche qui doit être répété à intervalle régulier.
    J'aimerai connaitre la bonne pratique pour arriver à cette fin.
    Et ainsi éviter le fameux Thread.sleep

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Task.Factory.StartNew(() => {
        while(!this._stop)
        {
            // Tout un tas de traitement hyper complexe type compter 
            // les doigts d'un cheval, ou le nombre de cheveux de mon boss (qui est chauve)
     
            Thread.sleep(x); // <- Berk !
        }
    });

  2. #2
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    tu peux utiliser manuel reset event

  3. #3
    Membre habitué
    Homme Profil pro
    Architecte C#
    Inscrit en
    Février 2003
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte C#

    Informations forums :
    Inscription : Février 2003
    Messages : 78
    Points : 144
    Points
    144
    Par défaut
    Bonjour, as tu regardé du coté de quartz.net ?

    c'est ce pourquoi il est conçu et t'évite ainsi de devoir coder la persistance des paramètres, que dois tu faire en cas d'echec de la tache, si le service redémarre, etc.

    Bonne journée

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Pourquoi ne pas utiliser un System.Windows.Forms.Timer ?
    Un peu comme cela :
    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
     
    Timer m_Timer = new Timer();
     
    public Constructeur(){
     m_Timer.Interval = 500; //intervalle entre les appels à la fonction (500ms) m_Timer_Tick
    m_Timer.Tick += new EventHandler(m_Timer_Tick);
    }
     
    private void Start() {
    m_Timer.Start();
    }
    private void Stopt() {
    m_Timer.Stop();
    }
     void m_Timer_Tick(object sender, EventArgs e) {
    //traitement hyper long cheveux du boss etc :)
    }

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    @azstar

    Dans mon cas, très certainement par méconnaissance, je ne vois pas l'utilité d'un ManuelResetEvent. Je souhaite que les tâches s'effectuent de façon régulière. Or a ma connaissance les ResetEvent sont là pour prévenir qu'un évènement quelconque c'est produit. Je ne vois pas ou tu veux en venir.

    @Vimaire

    Je ne connaissais pas ce projet et effectivement il est TRÈS intéressant. En effet comme tu le suggère je vais avoir à gérer les échecs, redémarrage & Co. Je me penche donc sérieusement sur cette librairie.

    @lead8209

    J'avais effectivement pensé a cette solution. Je l'avais écarté, peut être à tord, car je ne la trouvais pas très élégante. D'autant qu'en réalité dans mon projet je n'ais pas qu'une tâche qui fonctionnera de la sorte mais un certain nombre (variable) qui fonctionneront de façon autonome ; certaines étant chargé d'en lancer / relancer de nouvelles.

    Quoi qu'il en sois je vous remercie de vos réponses.

Discussions similaires

  1. Bonnes pratiques de protections individuelles
    Par Community Management dans le forum Sécurité
    Réponses: 22
    Dernier message: 05/04/2013, 12h47
  2. [log4j][débutant] Bonnes pratiques avec les threads ?
    Par scougirou dans le forum Logging
    Réponses: 1
    Dernier message: 13/07/2007, 17h27
  3. [Thread] PB Thread.sleep(1000) marche pas
    Par kliel dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 03/12/2004, 14h47
  4. [Thread]sleep()
    Par jokoss dans le forum Concurrence et multi-thread
    Réponses: 15
    Dernier message: 03/07/2004, 15h33

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