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 :

[Thread] Difference entre Join() et Sleep() ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 310
    Par défaut [Thread] Difference entre Join() et Sleep() ?
    Bonjour,

    Quelle est la différence entre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Threading.Thread.CurrentThread.Join(500)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Threading.Thread.Sleep(500);
    Merci.

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Pour le coup, il doit pas y'avoir grande différence.
    En fait, Join est utilisé pour synchroniser des threads. Généralement on fait un threadFils.Join() dans le thread père: dans ce cas là, le père attend son fils jusqu'au timeout. Chose qui n'est pas possible avec Sleep qui fait juste dormir le thread en question.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 310
    Par défaut
    Ok.
    En fait je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Thread threadCompute = new Thread(new ThreadStart(ConeCompute));
    threadCompute.IsBackground = true;
    threadCompute.Start();
     
    private void ConeCompute()
    {
       // calculs..
     
       threadCompute.Sleep()  n'existe pas
      que faut-il utiliser à la place ?
     
    }

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Sleep() n'existe pas, il faut préciser une durée de dodo!
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myThread.Sleep(TimeSpan.FromMinutes(1));

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Au vu du code donné, je dirais surtout que tu as une erreur car ta variable n'a pas la portée pour être utilisée dans ta méthode. Essaye avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentThread.Sleep(TimeSpan.FromMinutes(1));
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  6. #6
    Membre chevronné Avatar de _PascalC_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Vendée (Pays de la Loire)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 220
    Par défaut
    La méthode Sleep étant déclarée "static" je ferais lutôt ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.Threading.Thread.Sleep(TimeSpan.FromMinutes(1));
    Pascal

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 310
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Sleep() n'existe pas, il faut préciser une durée de dodo!
    Non je voulais dire que Thread n'a pas la méthode Sleep, Intellisense n'a pas Sleep dans sa liste si tu préfères !

    Vis-a-vis des deux autres codes proposés,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    System.Threading.Thread.Sleep(TimeSpan.FromMinutes(1));
    et
    CurrentThread.Sleep(TimeSpan.FromMinutes(1));
    comment le compilo va t-il savoir de quel thread on parle ?
    C'est ca qui m'intrigue, quand je met CurrentThread, c'est le thread principal, sinon quel thread prend-il ?

    Il me semble plus logique d'appeler threadCompute.Sleep ou .Join pour bien lui spécifier que c'est ce thread là que l'on veut endormir, non ?

Discussions similaires

  1. Réponses: 9
    Dernier message: 30/10/2013, 12h48
  2. Difference entre INNER JOIN et une jointure Classqiue
    Par inter_amine dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/09/2009, 12h13
  3. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  4. [] Difference entre MSHFlexGrid et MSFlexGrid
    Par olivierx dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 23/04/2003, 08h48
  5. Difference entre types d'Adresse IP
    Par freud dans le forum Développement
    Réponses: 3
    Dernier message: 02/03/2003, 02h06

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