CONNECT, exemple : illustre l'implémentation et l'utilisation des points de connexion (exemples C++)
Mise à jour : novembre 2007
Cet exemple illustre l'utilisation et l'implémentation de points de connexion (interfaces IConnectionPointContainer et IConnectionPoint) dans un environnement multithread.
Remarque : |
---|
Cet exemple est une version modifiée de l'exemple ATL Connect qui vise à illustrer la prise en charge COM du compilateur pour les récepteurs de points de connexion. Le client Drive est une implémentation native tandis que le client MDrive détourne légèrement les règles COM dans l'utilisation d'une fabrique de classe pour créer des objets récepteurs. Drive et MDrive ne dépendent ni de ATL, ni de MFC pour la prise en charge COM. |
Note de sécurité : |
---|
Cet exemple de code est fourni pour illustrer un concept et ne doit pas être utilisé dans des applications ou des sites Web, car il peut ne pas illustrer les pratiques de programmation les plus sûres. Microsoft n'assume aucune responsabilité pour tout dommage indirect ou consécutif en cas d'utilisation de l'exemple de code à des fins autres que celles prévues. |
Pour obtenir des exemples et des instructions d'installation :
Dans le menu ? (Aide) de Visual Studio, cliquez sur Exemples.
Pour plus d'informations, consultez Recherche des fichiers d'exemple.
La liste la plus récente et la plus complète d'exemples est disponible en ligne à partir de la page d'exemples Visual Studio 2008.
Des exemples sont également disponibles sur le disque dur de votre ordinateur. Par défaut, des exemples et un fichier Readme sont copiés dans un dossier sous \Program Files\Visual Studio 9.0\Samples\. Pour les éditions Express de Visual Studio, tous les exemples sont accessibles en ligne.
Génération et exécution de l'exemple
Pour générer et exécuter cet exemple
Ouvrez la solution connect.sln.
Dans le menu Générer, cliquez sur Générer la solution.
Sélectionnez le client que vous souhaitez exécuter, Drive ou Mdrive, pour en faire le projet de démarrage (cliquez avec le bouton droit sur le dossier du projet, puis cliquez sur Définir comme projet de démarrage). Vous trouverez davantage d'informations sur les clients dans la section « Fonctionnement de l'exemple ».
Dans le menu Déboguer, cliquez sur Exécuter sans débogage.
Fonctionnement de l'exemple
Le serveur est implémenté dans Connect.dll. Cette DLL permet de créer un objet COM CoRandom implémenté par la classe C++ CRandom. L'objet COM prend en charge IRandom (interface double) et IConnectionPointContainer ; il accepte également les connexions destinées à l'interface IRandomEvent.
L'interface IRandom prend en charge les méthodes suivantes :
Start — démarre un thread à l'intérieur de l'objet.
Stop — arrête un thread à l'intérieur de l'objet.
StopAll Arrête tous les threads en cours d'exécution.
Pendant leur exécution, les threads secondaires situés à l'intérieur de l'objet continuent de déclencher des événements par le biais du point de connexion.
Deux clients sont fournis : Drive et MDrive. Ils se trouvent dans les sous-répertoires Drive et MDrive.
Drive.exe est une application console simple qui fournit un seul objet implémentant l'interface IRandomEvent. Elle crée un objet CoRandom, appelle Advise et Unadvise sur le point de connexion et demande à l'objet CoRandom de déclencher des événements dans l'objet de l'application Drive.
Mdrive.exe est une application MFC basée sur des boîtes de dialogue, capable de créer plusieurs récepteurs de notifications et de contrôler le nombre de threads créés par le serveur. Lorsque vous exécutez Mdrive.exe, cliquez au moins une fois sur le bouton Start, puis cliquez plusieurs fois sur le bouton Advise. Chaque clic sur le bouton Advise ajoute un point de connexion, ce qui élargit l'affichage. Si vous ne cliquez pas sur le bouton Advise, aucune activité n'est constatée dans l'affichage.