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

VB.NET Discussion :

Event Handlers == intérruption ? [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 139
    Par défaut Event Handlers == intérruption ?
    Bonjour tout le monde,

    Pour mon projet, j'utilise Visual Studio 2010.
    Je viens de voir une notions, Event Handler. C'est apparu dans mon code.
    En fait, je suis en train de m'inspirer d'une code d'un exemple.
    Dans l'exemple, il y a un région, à côté, c'est marqué " Event Handler " comme commentaire.

    Je regarde aussi sur internet, ça me paraît que c'est pour une interruption. Mais je ne suis pas exactement sure.

    Qui le sait ????????, Merci d'avance !
    aller, je continue à regarder l'explication..en anglais, c'est pour ça je ne suis pas très sure quoi.

  2. #2
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Event Handler = Gestionnaire d'événement

    Ce n'est pas une interruption, mais simplement, lorsque ton code tourne, il peut déclencher des événements, afin d'indiquer où il en est, ou alors tu peux recevoir des événements de la part d'objets ou de la GUI (Tick d'un timer, Click d'une souris, etc.)

    Un gestionnaire d'événement va tourner en // de ton code, dans un thread séparé. Il ne va donc pas impacter le traitement en cours.

  3. #3
    Invité
    Invité(e)
    Par défaut
    L'une des différences entre l’interruption et le gestionnaire d’événement, est que l'on ne peut pas avoir une notion de temps avec l’événement, on ne peut pas savoir quand celui ci va être réellement exécuter. Alors que l'interruption stop tous les traitement en cours pour effectuer la routine contenu dans interruption.

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 139
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Event Handler = Gestionnaire d'événement

    Ce n'est pas une interruption, mais simplement, lorsque ton code tourne, il peut déclencher des événements, afin d'indiquer où il en est, ou alors tu peux recevoir des événements de la part d'objets ou de la GUI (Tick d'un timer, Click d'une souris, etc.)

    Un gestionnaire d'événement va tourner en // de ton code, dans un thread séparé. Il ne va donc pas impacter le traitement en cours.
    Merci de votre réponse.
    une autre question, j'ai vu l'explication que, on peut associer un ou plusieurs évènement avec "AddHandler". Quand ça arrive, les évènements associés vont exécuter en même temps, comme tu dis, "Thread" ????????
    Merci d'avance

  5. #5
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Désolé, ma réponse contient du code C#, mais à la syntaxe près, c'est équivalent.

    Oui, on peut (mais c'est assez rarement utilisé) attacher plusieurs handlers à un même événement.

    Mettons que tu crées un handler qui permet de changer la couleur du contrôle appelant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void Change_BackColor(object sender, EventArgs e)
    {
       if (sender is Control)
       {
          (sender as Control).BackColor = Colors.Red;
       }
    }
    Et un autre handler qui affiche juste un message à l'écran :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void Message(object sender, EventArgs e)
    {
        MessageBox.Show("Youpi tralala");
    }
    Pour des raisons de refactoring, si tu as un bouton qui doit à la fois changer de couleur et à la fois afficher un message quand tu cliques dessus, tu vas lui affecter les deux handlers sur l'événement Click, plutôt que de réécrire un nouveau handler inutile.

    La seule différence à ce moment, c'est que tu ne sais pas si la popup s'affichera après ou avant le changement de couleur du bouton, puisque les deux gestionnaires d'événement vont tourner en même temps dans des threads séparés.

  6. #6
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Hmmm, désolé, je me rends compte en testant, que les events handler sont lancés de façon séquentielle, dans le même thread.

    Donc quand tu fais des AddHandler(), l'ordre importe, car les handlers seront lancés dans cet ordre, et chaque handler devra attendre que les précédents aient terminé de tourner avant de se déclencher.

    Ça met d'ailleurs aussi le code principal en pause.

    Bon, j'arrête de dire des conneries en fait.

  7. #7
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 139
    Par défaut
    Merci beaucoup pour vous tous qui ont pris leur temps pour m'expliquer des choses. Merci bien !!!!!

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Un gestionnaire d'événement va tourner en // de ton code, dans un thread séparé.
    Citation Envoyé par StringBuilder Voir le message
    Hmmm, désolé, je me rends compte en testant, que les events handler sont lancés de façon séquentielle, dans le même thread.
    Ce n'est pas toujours dans un thread séparé, ni toujours dans le même thread. D'ailleurs, le même thread que quoi ? En général les contrôles graphiques vont déclencher leurs évènements dans le thread de l'UI, car c'est le seul thread qui les manipule. Si on prend un timer (celui de System.Timers, pas celui de Windows Forms), les évènements sont déclenchés sur un autre thread que celui qui a démarré le timer. Bref, il n'y a pas de règle fixe...

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/08/2007, 13h37
  2. event handler et accès anonyme
    Par @melie dans le forum SharePoint
    Réponses: 5
    Dernier message: 25/08/2007, 19h17
  3. Réponses: 1
    Dernier message: 15/08/2007, 15h45
  4. Birt Event Handler
    Par medbass dans le forum BIRT
    Réponses: 8
    Dernier message: 07/08/2006, 14h51
  5. Problème avec event handler
    Par MASSAKA dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 15/11/2005, 09h31

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