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 :

Probleme gestion Event


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut Probleme gestion Event
    Bonjour,
    je suis entrain de développer une application un C# dans la quelle:
    - une classe doit générer des chiffres aléatoires en boucle
    - une classe doit récupérer ces valeurs (simuler l'écoute d'un serveur en gros)

    Je passe donc par les events mais mon programme ne me renvoi les données envoyé par le "serveur".

    Voila mes deux classes:
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    public class Data 
        {
            public int nbRandom;        
     
            public Data()
            {
                Random rnd = new Random();
                nbRandom = rnd.Next(1, 100);                        
            }
     
            public int EventNombre
            {
                get { return this.nbRandom; }
            }
     
        }
     
        public class ServerX
        {
            public delegate void NbGenerated(Data e);
            public event NbGenerated OnTextChanged;
     
            public Data e = new Data();
     
            static void Main(string[] args)
            {
                ServerX s1 = new ServerX(); 
                while (true)
                {
                    s1.Generate();
                    Thread.Sleep(200);
                }
            }
     
            public void Generate()
            {
                e = new Data();
                Console.WriteLine("Le serveur a genere " + e.nbRandom);
            }
     
            public void TextChanged()
            {
                OnTextChanged(e);
            }
        }
    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
     
    public class ModuleServerX
        {
            private ServerX myListener = new ServerX();
     
            public ModuleServerX()
            {
                this.RecupData();
            }
     
            public void RecupData()
            {
                myListener.OnTextChanged += new ServerX.NbGenerated(myListener_OnTextChanged);
                myListener.TextChanged();
            }
     
            public void myListener_OnTextChanged(Data e)
            {    
                Console.WriteLine("L'adapter a recupere " + e.nbRandom);
            }
        }
    Pouvez vous m'aider svp ??

  2. #2
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    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
     
            public void Generate()
            {
                e = new Data();
                Console.WriteLine("Le serveur a genere " + e.nbRandom);
                TextChanged();
            }
     
            public void TextChanged()
            {
                if (OnTextChanged != null)
                {
                  OnTextChanged(e);
                } 
            }
    Tu es bien obligé d'appeler TextChanged quelque part...
    Et toujours vérifier que l'event ne soit pas à null....

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut
    Je l'appel TextChanged dans la méthode RecupData de la classe ModuleServerX ...

  4. #4
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Ouais, mais ça ne tiens pas debout.
    C'est ton serveur qui sait quand la valeur a changé, en l'occurrence dans la fonction Generate.
    Or à ce moment, il doit déclencher l'event OnTextChanged.

    Dans ton soft tu t'abonnes à cet event et tu y fais quelque chose.

    Supprimer cet appel à TextChanged dans le soft
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void RecupData()
            {
                myListener.OnTextChanged += new ServerX.NbGenerated(myListener_OnTextChanged);
               //myListener.TextChanged();
            }

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 107
    Par défaut
    comment je peut mettre la structure en place avec des thread ?

  6. #6
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617

Discussions similaires

  1. problem Gestion electronique de documents opensource Maarch
    Par moabomotal dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 16/12/2006, 16h18
  2. Problème gestion souris avec glademm
    Par flow++ dans le forum Matériel
    Réponses: 1
    Dernier message: 23/05/2006, 10h20
  3. probleme gestion condition switch - case
    Par DarkMax dans le forum Langage
    Réponses: 5
    Dernier message: 07/09/2005, 14h25
  4. [MFC] Probleme Key Events
    Par vainsoul dans le forum MFC
    Réponses: 11
    Dernier message: 08/08/2005, 12h01
  5. Probleme gestion camera
    Par Fry dans le forum DirectX
    Réponses: 3
    Dernier message: 03/12/2004, 11h41

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