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

Linq Discussion :

Event ou Threads


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2016
    Messages : 63
    Par défaut Event ou Threads
    Bonjours tous le monde,

    Voici ma situation :

    J'ai une variable "StandBy" de type bool qui est defini dans un struct, cette variable est accessible par l'ensemble de ma classe.
    Une machine est reliee a mon programme , lorsque la machine se debranche StandBy devient true au lieu de false;

    Et j'aimerai, déclencher un événement lorsque cette variable change de valeur.(pour savoir ainsi a quel moment la machine s'est debranchee);
    Est-ce possible ? si oui, comment faire ?


    Je vous remercie d'avance !

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,
    Un évènement pourra faire l'affaire : event (référence C#)

  3. #3
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2016
    Messages : 63
    Par défaut
    Merci mais en fait j'ai deja essaye mais je ne comprend pas pk il ne rentre pas dedans quand je debranche ma machine.

    mon code est 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
            public struct DataFields
            {
                public string RecDataBox;
                public string CreditCounter;
                public string UsedCounter;
                public bool PuF;
                public bool MtrE;
                public bool TimeE;
                public bool AutoS;
                public bool BagB;
     
                public bool BagE;
                internal bool StandB;
     
     
                public bool STandB {
                    get { return StandB; }
                    set {
                        StandB = value;
                        NotifyPropertyChanged("STandB");
                    }
                }
     
     
                public bool BagT;
                public bool CreditM;
                public bool IdlelS;
                public bool DoorO;
                public bool SystemL;
     
     
                #region INotifyPropertyChanged Members
     
                public event PropertyChangedEventHandler PropertyChanged;
                private void NotifyPropertyChanged(String info) {
                    if (PropertyChanged != null) {
                        PropertyChanged(this, new PropertyChangedEventArgs(info));
                    }
                }
            };

  4. #4
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par nana92 Voir le message
    Merci mais en fait j'ai deja essaye mais je ne comprend pas pk il ne rentre pas dedans quand je debranche ma machine.
    Tu peux utiliser la balise CODE lors que insères du code. Cela le formate de manière à ce qu'il soit plus lisible

    Citation Envoyé par nana92 Voir le message
    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
     
            public struct DataFields
            {
                public string RecDataBox;
                public string CreditCounter;
                public string UsedCounter;
                public bool PuF;
                public bool MtrE;
                public bool TimeE;
                public bool AutoS;
                public bool BagB;
     
                public bool BagE;
                internal bool StandB;
     
     
                public bool STandB {
                    get { return StandB; }
                    set {
                        StandB = value;
                        NotifyPropertyChanged("STandB");
                    }
                }
     
     
                public bool BagT;
                public bool CreditM;
                public bool IdlelS;
                public bool DoorO;
                public bool SystemL;
     
     
                #region INotifyPropertyChanged Members
     
                public event PropertyChangedEventHandler PropertyChanged;
                private void NotifyPropertyChanged(String info) {
                    if (PropertyChanged != null) {
                        PropertyChanged(this, new PropertyChangedEventArgs(info));
                    }
                }
            };
    C'est normal que ton code ne fonctionne pas. L'interface INotifyPropertyChanged permet de dire que tu mets le mécanisme en place nécessaire à la surveillance de changement intervenant dans une classe que tu définies, pas de mettre sous surveillance une classe que tu utilises. Ici, ce n'est pas la bonne approche.

    Tu as potentiellement plusieurs solutions (mais la mise en place de certaines nécessite certains prérequis) :
    1. La classe contenant la propriété StandBy défini un événement style OnStandByChanged. Dans ce cas, il te suffit de l'écouter ;
    2. La classe contenant la propriété StandBy implémente l'interface INotifyPropertyChanged. Dans ce cas, il te faut écouter l'événement PropertyChanged et vérifier que le nom de la propriété correspond à "StandBy" ;
    3. Lire, à intervalle régulier, la valeur de la propriété StandBy.


    La solution numéro 3 fonctionnera à tous les coups, mais est également la plus lourde à mettre en place. En effet, il faut :
    • Lancer une tâche à intervalle régulier et scruter la valeur de StandBy ;
    • Définir un événement StandByChanged (ou tout au nom mieux adapté) que ton programme puisse écouter afin d'être notifié des modifications ;
    • Si la valeur de StandBy a changé (et seulement si elle a changé, pas juste si elle est false), générer un événement StandByChanged.

  5. #5
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2016
    Messages : 63
    Par défaut
    Citation Envoyé par dorinf Voir le message
    Tu peux utiliser la balise CODE lors que insères du code. Cela le formate de manière à ce qu'il soit plus lisible



    C'est normal que ton code ne fonctionne pas. L'interface INotifyPropertyChanged permet de dire que tu mets le mécanisme en place nécessaire à la surveillance de changement intervenant dans une classe que tu définies, pas de mettre sous surveillance une classe que tu utilises. Ici, ce n'est pas la bonne approche.

    Tu as potentiellement plusieurs solutions (mais la mise en place de certaines nécessite certains prérequis) :
    1. La classe contenant la propriété StandBy défini un événement style OnStandByChanged. Dans ce cas, il te suffit de l'écouter ;
    2. La classe contenant la propriété StandBy implémente l'interface INotifyPropertyChanged. Dans ce cas, il te faut écouter l'événement PropertyChanged et vérifier que le nom de la propriété correspond à "StandBy" ;
    3. Lire, à intervalle régulier, la valeur de la propriété StandBy.


    La solution numéro 3 fonctionnera à tous les coups, mais est également la plus lourde à mettre en place. En effet, il faut :
    • Lancer une tâche à intervalle régulier et scruter la valeur de StandBy ;
    • Définir un événement StandByChanged (ou tout au nom mieux adapté) que ton programme puisse écouter afin d'être notifié des modifications ;
    • Si la valeur de StandBy a changé (et seulement si elle a changé, pas juste si elle est false), générer un événement StandByChanged.
    Merci bcp !!!
    Sans abuser de ta patience aurais tu une idee de code car j'ai essaye mais ca ne marche toujours pas , aurais tu une direction pour la premiere ou plutot la 3 eme solution?
    Merci bcp bcp!!!

  6. #6
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Dans ce cas, met ton code. On regardera ensemble ce qui ne va pas (et c'est comme ça que tu comprendras le mieux !)

  7. #7
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par nana92 Voir le message
    Une machine est reliee a mon programme , lorsque la machine se debranche StandBy devient true au lieu de false;
    Je pense que la clé est là : comment cette variable passe-t-elle a true ? Est-ce ton programme qui scrute régulièrement l'état de la machine ? Ou alors est-ce une propriété qui, en fonction de l'état de la machine au moment où tu l'interroges, te renvoies true ou false ?

  8. #8
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2016
    Messages : 63
    Par défaut
    Citation Envoyé par dorinf Voir le message
    Je pense que la clé est là : comment cette variable passe-t-elle a true ? Est-ce ton programme qui scrute régulièrement l'état de la machine ? Ou alors est-ce une propriété qui, en fonction de l'état de la machine au moment où tu l'interroges, te renvoies true ou false ?
    en fait jai teste la machine plusieures fois et j'ai vu que comme elle ne pouvait pas renvoye de signal alors jai teste les propriete apres avoir debranche et jai vu que la propriete StandB devenait false. La machine recoit un signal qui change le statut de la propriete .

    seuelemnt maintenant j'aimerais en etre averti.

    Merci d'avance

  9. #9
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2016
    Messages : 63
    Par défaut
    J'aimerais soit faire soit une verification constante de la propriete en parallele de mon programme soit etre averti directement lorque celle ci change.
    avez vous une idee ?

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

Discussions similaires

  1. Events et threads
    Par HamzuS The Great dans le forum Développement Windows
    Réponses: 1
    Dernier message: 16/12/2010, 22h18
  2. Récupération d'event avec thread
    Par koyot3 dans le forum VB.NET
    Réponses: 1
    Dernier message: 17/09/2010, 08h25
  3. Création events pour thread
    Par syphon22 dans le forum Langage
    Réponses: 3
    Dernier message: 19/01/2010, 08h50
  4. Swing Event Dispatching Thread
    Par YeFFreY dans le forum EDT/SwingWorker
    Réponses: 14
    Dernier message: 23/06/2008, 10h53
  5. [C#]Thread, event/delegate et Form
    Par doccpu dans le forum Windows Forms
    Réponses: 28
    Dernier message: 01/08/2005, 18h35

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