CEvent

Un objet de classe CEvent représente un « événement » — un objet de synchronisation qui permet à un thread d'aviser l'autre qu'un événement s'est produit. Les événements sont utiles lorsqu'un thread a besoin de savoir quand effectuer sa tâche. Par exemple, un thread qui copie les données dans une archive de données aurait besoin d'être averti lorsque de nouvelles données sont disponibles. En utilisant un objet CEvent de notifier le thread copie lorsque de nouvelles données sont disponibles, le thread peut exécuter sa tâche dès que possible.

CEvent objets ont deux types : Manuel et automatique. Un manuel CEvent objet reste dans l'état défini par SetEvent ou ResetEvent jusqu'à ce que l'autre fonction est appelée. Un objet CEvent automatique retourne automatiquement à l'État non signalé (indisponible) après qu'au moins un thread est sorti.

Pour utiliser un objet CEvent , construire l'objet CEvent lorsque c'est nécessaire. Spécifiez le nom de l'événement que vous souhaitez attendre, et que votre application doit posséder initialement il. Vous pouvez alors accéder à l'événement lorsque le constructeur retourne. Appeler SetEvent signal (rendre disponible) l'objet de l'événement et appelez ensuite Unlock lorsque vous avez terminé accès à la ressource contrôlée.

Une autre méthode pour l'utilisation des objets CEvent est d'ajouter une variable de type CEvent comme un membre de données de la classe que vous souhaitez contrôle. Lors de la construction de l'objet contrôlé, appeler le constructeur du membre de données CEvent spécifiant si l'événement est signalé au départ, le type d'événement d'objet que vous voulez, que le nom de l'événement (si elle sera utilisée à travers les frontières de processus) et souhaité des attributs de sécurité.

Pour accéder à une ressource contrôlée par un objet CEvent de cette manière, tout d'abord créer une variable de type CSingleLock ou type CMultiLock en fonction de la ressource sur votre accès membre. Appelez ensuite la fonction de membre de l'objet lock Lock (par exemple, CMultiLock::Lock). À ce stade, votre thread sera soit accéder à la ressource, attendez que la ressource être libéré et accéder ou attendre pour la ressource d'être libéré et hors du temps, ne pas accéder à la ressource. En tout cas, votre ressource a été consultée de façon thread-safe. Pour libérer les ressources, appeler SetEvent pour signaler l'objet événement et utilisez ensuite la fonction de membre de l'objet lock Unlock (par exemple, CMultiLock::Unlock), ou permettre l'objet lock à tomber hors de la portée.

Pour plus d'informations sur l'utilisation des objets CEvent , consultez l'article Multithreading : comment utiliser les Classes de synchronisation dans le Guide du programmeur Visual C++.

# include lt;afxmt.h>

Membres de la classe |nbsp ; Classe de base | Graphique de la hiérarchie

Écha&ntillonnbsp ; Exemple MFC MTGDI

Index