Savoir lorsque quelqu'un s'abonne à un évènement?

[Résolu]
Signaler
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
-
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
-
Bonjour,

je réalise une application de capture de flux vidéo de caméra IP.

J'ai un processus de capture du flux qui envois au travers d'un evenement l'image courante capturée.

Je souhaiterai, lorsque personne n'est abonnée à cet évènement, ne pas capturer le flux (pour éviter une consommation du cpu et la bande passante du résaux inutile).

Existe-t-il une méthode pour lever un evenement ou autre lorsque quelqu'un s'abonne à un evenement particulier?
Je souhaiterai éviter une boucle sans fin qui teste l'état de l'abonnement ( while(abonement==null) Application.DoEvents()) et que le systeme soit assez réactif (ne pas faire un ticker qui teste l'état à intervale régulier).
Existe t il d'autre solution?

f.colo

3 réponses

Messages postés
129
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
30 décembre 2007
3
Bonjour fcolo,

Tu peux surveiller les abonnements et désabonnements à un évènement en implémentant les méthodes add et remove de cet évènement, comme ceci :
<hr size="2" width="100%" />// Délégué privé
private MyEventHandler myEvent;

// Accès public au délégué, pour ajouter ou supprimer des abonnés
public event MyEventHandler MyEvent
{
    add
    {
       myEvent += value;
       // Quelqu'un vient de s'abonner
    }
    remove
    {
       myEvent -= value;
       // Quelqu'un vient de résilier son abonnement
    }
}
<hr size="2" width="100%" />Tu peux faire ce que tu veux dans le code de ces méthodes, comme déclencher un évènement, mettre à jour des variables, etc.
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Statut
Membre
Dernière intervention
29 janvier 2008
1
    ouhla ... j'ai l'impression que tu t'ai bien compliquer la vie!
A quel moment tu lances ta capture et à quel moment tu l'arrete ?
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
2
[auteurdetail.aspx?ID=173141 bernie666]: plusieur module de mon application peuvent afficher la meme vidéo. Pour éviter de capturer plusieur fois la meme vidéo, les module s'abonne à l'evenement de réception d'une nouvelle image (flux MJPG). Donc je n'arrétais la capture qu'au moment de la fermeture de l'application, même si aucun module ne capturé souhaité voir la vidéo. D'où une consommation CPU et BP inutile.



[auteurdetail.aspx?ID=628847 dgouttegattat]: génial ce truc, c'est comme le get/set des variables, je ne connaissait pas du tout. Je pense que ca va bien me servir. Dans le add, si l'evenement est null je lance capture puis je m'abonne et dans le remove, je me desabonne et si l'evenement est null alors je stoppe la capture.

f.colo