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

Résolu
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 4 juil. 2006 à 14:59
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 4 juil. 2006 à 15:37
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

dgouttegattat Messages postés 129 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 30 décembre 2007 3
4 juil. 2006 à 15:26
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.
3
bernie666 Messages postés 427 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 29 janvier 2008 1
4 juil. 2006 à 15:14
    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 ?
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
4 juil. 2006 à 15:37
[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
0
Rejoignez-nous