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 :

Partage variable entre Threads


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Homme Profil pro
    Developpeur
    Inscrit en
    Mars 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Mars 2011
    Messages : 115
    Par défaut Partage variable entre Threads
    Bon,
    J'ai une application Client/Serveur,
    Coté client j'ai utilisé un thread (ReceivePacket) qui reçoit le message venant du serveur. J'utilise Windows.Form pour l'interface. Le probleme c'est que le compilateur me prévient d'invalidité d'utilisations des objets entre thread quand je fais appele aux composants des Form (SplitContainer, ....) dans le thread (ReceivePacket), Or j'ai déjà partagé l'objet au moyen de XX.start(ObjetApartager)???
    Est quelqu'un aura un idée de cause de cette problème?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Par défaut
    Je ne suis pas sur de tout à fait comprendre ce que tu cherches à faire.

    Pour faire "dialoguer" deux classes dans des threads différents, tu peux utiliser les délégués, et la méthode Invoke.

    Si tu as une variable/propriété partagée entre deux threads, tu peux faire un lock, pour en assurer la sûreté d'accès.

  3. #3
    Membre éprouvé

    Homme Profil pro
    Developpeur
    Inscrit en
    Mars 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Mars 2011
    Messages : 115
    Par défaut
    C'est la deuxième proposition qui me semble très utile.
    Mais que fait exactement lock?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Par défaut
    Je vais essayer de ne pas dire de bétises

    En gros, lock interdit à deux thread de venir dans le bout de code concerné en même temps. Et à la place créer une liste d'attente.

    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
    int GetCount()
    {
        lock(_list)
        {
            return _list.Count;
        }
    }
     
    void Add(object item)
    {
        lock(_list)
        {
            _list.Add(item);
        }
    }
    En faisant cela, tu t'assure qu'aucun thread ne viennent ajouter des données dans _list, pendant que tu compte ce qu'il y a dedans.
    De plus deux thread ne peuvent ajouter en même temps des données dans _list.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Tu partages des objets graphiques (Form ==> Winform ?) entre threads ? Dans ce cas là je t'arrête, il ne doivent être manipulés que depuis le thread UI ! D'où le message indiquant que ce composant appartient à un autre thrad !

  6. #6
    Membre éprouvé

    Homme Profil pro
    Developpeur
    Inscrit en
    Mars 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Mars 2011
    Messages : 115
    Par défaut
    Citation Envoyé par Arnard Voir le message
    Tu partages des objets graphiques (Form ==> Winform ?) entre threads ? Dans ce cas là je t'arrête, il ne doivent être manipulés que depuis le thread UI ! D'où le message indiquant que ce composant appartient à un autre thrad !
    Donc que faire alors? Mon but c'est de rendre visible le SplitContainer + TreeView + ListView quand le client reçoit des messages ACK venant du serveur car je compte le traiter dans la deuxième thread (ReceivePacket)

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

Discussions similaires

  1. Partager des variables entre Threads
    Par ToTo13 dans le forum Concurrence et multi-thread
    Réponses: 7
    Dernier message: 01/04/2010, 16h09
  2. partage de variables globlales entre threads
    Par ikuzar dans le forum Débuter
    Réponses: 7
    Dernier message: 02/09/2009, 15h43
  3. Partager variables entre plusieurs sessions ?
    Par fredtheman dans le forum Langage
    Réponses: 7
    Dernier message: 16/05/2008, 21h07
  4. partage d'une variable entre plusieurs threads
    Par baedal dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 27/02/2008, 20h33
  5. Partager boolean entre Threads
    Par Flipper_fk dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 26/04/2007, 13h51

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