Accueil > > > NOTIFICATIONS DANS UN DELEGATE ASYNCHRONE
NOTIFICATIONS DANS UN DELEGATE ASYNCHRONE
Information sur la source
Description
Bonjour, Pour un projet en développement, j'ai mis au point un delegate asynchrone avec 2 événements de type EventWaitHandle dont l'un informe quand le traitement est terminé et l'autre autorise le traitement suivant. C'est une classe que j'ai appelé DelegateNotify qui encaspule le delegate et les 2 événements. Pour illustrer ce delegate, j'ai développé un petit test sympathique et ludique : une télé! Car une télé a besoin que l'image soit entièrement affichée avant de passer à la suivante. Mais, ce n'est qu'un petit test alors il n'y a pas de présentateur ! Salut :)
Source
- 1/ Le delegate:
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Runtime.Serialization;
- using System.Reflection;
- using System.Threading;
-
- namespace notify
- {
- public class DelegateNotify
- {
- public delegate void Notify();
- public delegate void AsyncCallback(IAsyncResult ar);
- private EventWaitHandle EventFinished;
- private EventWaitHandle Event;
- private Notify running;
- private AsyncCallback review;
-
- public DelegateNotify()
- {
- this.Event = new EventWaitHandle(false, EventResetMode.AutoReset);
- this.EventFinished = new EventWaitHandle(false, EventResetMode.AutoReset);
- }
-
- public void SetFunction(Notify not)
- {
- this.running = not;
- }
-
- public void SetReview(AsyncCallback callback)
- {
- this.review = callback;
- }
-
- public void WaitBeforeContinue()
- {
- WaitHandle.WaitAny(new WaitHandle[] { this.Event });
- }
-
- public void WaitWorkEnding()
- {
- WaitHandle.WaitAny(new WaitHandle[] { this.EventFinished });
- }
-
- public void NotifyContinue()
- {
- this.Event.Set();
- }
-
- public void NotifyWorkEnding()
- {
- this.EventFinished.Set();
- }
-
- public void Invoke()
- {
- this.running.BeginInvoke(new System.AsyncCallback(delegate(IAsyncResult async) {
- if (this.review != null)
- this.review(async);
- }), null);
- }
- }
- }
1/ Le delegate:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Serialization;
using System.Reflection;
using System.Threading;
namespace notify
{
public class DelegateNotify
{
public delegate void Notify();
public delegate void AsyncCallback(IAsyncResult ar);
private EventWaitHandle EventFinished;
private EventWaitHandle Event;
private Notify running;
private AsyncCallback review;
public DelegateNotify()
{
this.Event = new EventWaitHandle(false, EventResetMode.AutoReset);
this.EventFinished = new EventWaitHandle(false, EventResetMode.AutoReset);
}
public void SetFunction(Notify not)
{
this.running = not;
}
public void SetReview(AsyncCallback callback)
{
this.review = callback;
}
public void WaitBeforeContinue()
{
WaitHandle.WaitAny(new WaitHandle[] { this.Event });
}
public void WaitWorkEnding()
{
WaitHandle.WaitAny(new WaitHandle[] { this.EventFinished });
}
public void NotifyContinue()
{
this.Event.Set();
}
public void NotifyWorkEnding()
{
this.EventFinished.Set();
}
public void Invoke()
{
this.running.BeginInvoke(new System.AsyncCallback(delegate(IAsyncResult async) {
if (this.review != null)
this.review(async);
}), null);
}
}
}
Conclusion
Pour résumer, la classe DelegateNotify utilise 1 delegate principal appelé Notify ainsi que 2 EventWaitHandle nommés EventFinished et Event. Il faut appeler d'abord SetFunction avec l'implémentation du delegate puis Invoke. Ensuite, dans le delegate, on peut appeler NotifyWorkEnding et WaitBeforeContinue. Dans l'application, on peut appeler WaitWorkEnding et NotifyContinue. Et voila
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Animation Flash dans les Application Windows [ par Online ]
C'est encore moiVoila, cette fois ci, je voudrais mettre une animation flash sur mon application Wnidows mais je ne vois pas comment faire de facon s
Animation & ressource... [ par welc ]
Bonjour,J'utilise MS Visual C#.J'ai récupéré l'animation AVI qui apparait quant on copie un fichier sous windows xp.Je voudrais donc l'intégrer à mon
video et richtextbox [ par poupthek ]
Bonjour,Je voudrais ajouter une ou plusieurs vidéos à une richtextbox. Je sais comment faire avec une image (utilisation du clipboard) mais pas avec d
Probleme multithreading Invoke etc. [ par tarkil ]
Bonjour,J'ai un petit problème et j'espere que quelqu'un pourra m'aider.Je suis dans ma fenetre principale.Je lance un thread A.Depuis ce thread A, je
Besoin d'aide pour lecteur video en C# [ par sof_fr ]
Bonjour à tous,Je ne vai pas vous bourrer le crane avec 10 000 lignes alors je serai rapide :)J'ai un projet à mener à bien, et je dois programmer une
Seek bar pour lecture d'une video [ par Tsu91 ]
Bonjour,je voudrais savoir comment faire pour créer une Seek bar dans une appli de lecture d'un fichier video avec direct X?merci :D
Animation - GIF [ par vainsoul ]
Bsr tout le monde, Voila, j'ai crée un gif animé qui ne se reprend pas au debut lorsqu'il est finit, mais quand je l'utilise avec une appl
Webcam et streaming [ par dionysos6868 ]
Bonjour je cherche le moyen d'envoyer en flux continu la video prise par ma webcam en direct j'ai mon script pour avoir la video de ma webcam sur un
Fichier avi sur Smartphone [ par zigxag ]
Bonjour,mon application smartphone a pour but de demander l'enregistrement video d'une webcam. Une fois le fichier video enregistrer sur le serveur, j
Accès partagés entre threads [ par CMatt ]
Bonjour à tous! voici qq lignes de codes qui résume ce que je fais : using System; using System.Drawing; using System.Threading; public c
|
Derniers Blogs
MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril SHAREPOINT 15 TECHNICAL PREVIEW MANAGED OBJECT MODEL SOFTWARE DEVELOPMENT KITSHAREPOINT 15 TECHNICAL PREVIEW MANAGED OBJECT MODEL SOFTWARE DEVELOPMENT KIT par Matthew
http://www.microsoft.com/download/en/details.aspx?id=28768&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+MicrosoftDownloadCenter+(Microsoft+Download+Center) ...
Cliquez pour lire la suite de l'article par Matthew
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|