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

Windows Forms Discussion :

variable garde sa valeur initiale


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut variable garde sa valeur initiale
    Bonjour,
    Veuillez examiner ce code avec moi, et me dire pourquoi la variable var garde sa valeur initiale apres l'avoir modifiée dans un thread !
    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
    class MyClass
    {
    	private Thread th1;
    	private Thread th2;
     
    	private int var;
     
    	public static main()
    	{
    		th1 = new Thread(new ThreadStart(funTh1));
    		th1.Start();
    	}
     
    	private void funTh1()
    	{
    		var = 1;
    		th2 = new Thread(new ThreadStart(funTh2));
    		th2.Start();
    		////NORMALEMENT SUR CETTE LIGNE : var = 2 !! ce qui n'est pas le cas !
    	}
     
    	private void funTh2()
    	{
    		var = 2;
    	}
    }

  2. #2
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    C'est normal, ton thread est lancé en parallèle.
    Au moment où tu demande la valeur de ta variable, le thread 2 n'a pas encore été lancé, ou n'a pas fini son traitement...

    Pour avoir le résultat que tu veux, il faut procéder ainsi

    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
     
    private void funTh1() 
    { 
     
        var = 1; 
     
        th2 = new Thread(new ThreadStart(funTh2)); 
     
        th2.Start(); 
     
        while (th2.ThreadState != ThreadState.Stopped) { 
     
            // Attend la fin du thead 
     
        } 
     
        Console.WriteLine(var); 
     
    }
    Mais dans ce cas, je ne vois pas l'intérêt d'un thread...


  3. #3
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    je suis d'accord avec toi, mais même si on attend la fin du deuxieme thread le resultat est toujours le même

  4. #4
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Citation Envoyé par subzero01 Voir le message
    je suis d'accord avec toi, mais même si on attend la fin du deuxieme thread le resultat est toujours le même
    Non, je crois pas, essaye mon exemple ...

  5. #5
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    desolé mais deja testé et pas de resultat

  6. #6
    Membre très actif Avatar de subzero01
    Inscrit en
    Décembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 281
    Par défaut
    pour te rassurer que c'est pas le cas d'une attente validation de l'affectation, quand je verifie la valeur (avant affectation) de 'var' dans le thread 2 (a l'aire du débuggeur) ca devrait donner var=1 (puisque var a été affectée avant par la valeur 1) ce qui est pas le cas !!!

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

Discussions similaires

  1. Valeur initiale, modification de variable
    Par marioBross2 dans le forum Débuter
    Réponses: 2
    Dernier message: 05/05/2009, 01h15
  2. Couleur de cellule variable suivant une valeur
    Par repié dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/03/2006, 08h04
  3. Comparaisons de variables et récup valeur mini
    Par pegase23 dans le forum Access
    Réponses: 4
    Dernier message: 02/01/2006, 11h36
  4. [MySQL] select et valeur initiale
    Par dleu dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 18/11/2005, 22h16
  5. [JOptionPane.showInputDialog] Valeur initiale + titre
    Par yanndublanche dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 03/08/2005, 14h43

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