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

Framework .NET Discussion :

Les événement sont-ils synchrones ?


Sujet :

Framework .NET

  1. #1
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut Les événement sont-ils synchrones ?
    Bonjour,

    Voici une partie de mon code :
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    namespace MonApp
    {
      public delegate void ClasseEvtEventHandler(object sender, ClasseEvtEventArg e);
     
      public class ClasseEvt
      {
        public event ClasseEvtEventHandler PLCEvt;
     
        ...
        private void scanPLC_Elapsed(object sender, ElapsedEventArgs e)
        {
          ...
          CreateEvtConfig(res);
          ...
        }
     
        private void CreateEvtConfig(string source)
        {
          EvtConfig evtConfig = new EvtConfig("evtConfig");
          ...
     
          OnPLCEvt(new ClasseEvtEventArg(EvtConfig));
          ....
        }
     
     
        public void OnPLCEvt(ClasseEvtEventArg e)
        {
          PLCEvt(this, e);
        }  
      }
     
      public class ClasseEvtEventArg : System.EventArgs
      {
        public Config EvtPLC;
        public ClasseEvtEventArg(Config arg)
        {
          EvtPLC =  arg;
        }
     
      }
     
      public class ReceptEvt
      {
        private ClasseEvt clsEvt;
     
        // quelque part dans le contructeur
          clsEvt = new ClasseEvt();
          clsEvt.PLCEvt += new ClasseEvtEventHandler(clsEvt_PLCEvt);
     
     
        private void clsEvt_PLCEvt(object sender, ClasseEvtEventArg e)
        {
          Mon Traitement
        }
      }
    }
    Tout ça pour dire que pour sortir de la fonction CreateEvtConfig il faut que je soit sorti de clsEvt_PLCEvt.
    Je pensais que ClasseEvt "balancait" l'événement à tous ses abonnés et continuait son chemin sans attendre que les abonnés aient fini le travail.

    Est-ce que j'ai mal compris la notio d'évément ou ai-je mal implémenté l'évenement ?

    Merci.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Salut,

    Effectivement un appel d'évenement est synchrone, c'est a dire que toute les méthodes enregistrées sont exécutées par le thread appelant.
    Maintenant si tu veux que les traitements des abonnés soient fait de manière asynchrone, soit l'abonné lui même enregistre un méthode qui lance un traitement asynchrone et retourne immédiatement (et alors tous les traitements seront fait en parallele), soit tu fais appeler l'évènement par un autre thread (et là les traitements seront sérialisés mais ne bloqueront pas le thread appelant).

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

Discussions similaires

  1. Les frameworks de persistance (ORM) sont-ils dangereux pour les performances ?
    Par SQLpro dans le forum Débats sur le développement - Le Best Of
    Réponses: 205
    Dernier message: 04/02/2017, 17h43
  2. Réponses: 0
    Dernier message: 12/10/2010, 09h45
  3. Réponses: 2
    Dernier message: 11/05/2010, 20h36
  4. [Lazarus] Les composants de la JVCL sont-ils utilisables ?
    Par martinus45 dans le forum Lazarus
    Réponses: 3
    Dernier message: 11/09/2009, 20h37
  5. Réponses: 5
    Dernier message: 14/08/2009, 09h55

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