cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 2007
-
4 juil. 2006 à 14:59
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 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?
dgouttegattat
Messages postés129Date d'inscriptionmardi 22 novembre 2005StatutMembreDernière intervention30 décembre 20073 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.
cs_fcolo
Messages postés201Date d'inscriptionmercredi 8 février 2006StatutMembreDernière intervention20 février 20072 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.