Partager via


AutoThread, exemple d'attributs : illustre l'utilisation de CAtlAutoThreadModule

Mise à jour : novembre 2007

L'exemple AutoThread illustre l'utilisation de CAtlAutoThreadModule. Le serveur est implémenté dans le fichier Server.exe. Le module du fichier EXE est dérivé de CAtlAutoThreadModule et non de CAtlModule.

L'exemple AutoThread est la version sans attributs de cet exemple.

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 Visual Studio 2008 Samples.

  • Des exemples sont également disponibles sur le disque dur de votre ordinateur. Des exemples et un fichier Readme sont copiés par défaut 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.

Pour générer et exécuter cet exemple

  1. Ouvrez le fichier solution AutoThread.sln.

  2. Dans le menu Générer, cliquez sur Générer la solution. Cela génère et enregistre le client et le serveur.

  3. Démarrez deux instances d'ActiveX Control Test Container. Pour plus d'informations sur la manière d'accéder à Test Container, consultez Test des propriétés et des événements à l'aide de Test Container.

  4. Insérez l'un des contrôles client (Classe CAutoCtl) dans chaque conteneur de test.

  5. Cliquez sur l'un des contrôles et notez qu'il faut attendre une seconde le retour du serveur.

  6. Positionnez et redimensionnez les conteneurs de test pour qu'ils soient tous deux visibles simultanément.

  7. Cliquez sur l'un des contrôles, puis cliquez rapidement sur l'autre contrôle. Notez qu'ils terminent l'attente environ au même moment. Si CComAutoThreadModule n'était pas utilisé, le premier contrôle terminerait après une seconde, mais le deuxième ne terminerait qu'une seconde complète après la fin du premier contrôle. Le deuxième appel à la méthode sleep n'aurait pas lieu avant la fin du premier contrôle Vous pouvez utiliser les méthodes Delay(PropGet) et Delay(PropPut) pour régler (en millisecondes) la durée de mise en veille du serveur. S'il est correctement configuré, le second appel à la méthode Sleep peut être retourné avant le premier.

Fonctionnement de l'exemple

L'interface du serveur a une méthode unique : Sleep. Cette méthode met le thread du serveur en veille pendant une période donnée. La partie cliente de l'exemple est un contrôle ActiveX qui appelle la méthode Sleep du serveur lorsque l'utilisateur clique sur le contrôle. Le client a également une propriété nommée Delay qui représente la durée pendant laquelle le thread du serveur est en veille. Le contrôle affiche le texte "Ready" lorsqu'il attend un clic de l'utilisateur. Le texte "Waiting" s'affiche lorsque le contrôle attend la fin de la mise en veille du serveur.

Attributs

Cet exemple utilise les attributs suivants :

  • AutoThread/AutoClient   coclass, dual, emitidl, helpstring, id, in, module, object, out, pointer_default, progid, propget, propput, registration_script, retval, threading, uuid, version, vi_progid

  • AutoThread/AutoServer   coclass, dual, emitidl, helpstring, id, module, object, pointer_default, progid, threading, uuid, version, vi_progid

Mots clés

Cet exemple utilise les mots clés suivants :

AtlGetObjectSourceInterface; BEGIN_SINK_MAP; CoCreateInstance; DECLARE_CLASSFACTORY_SINGLETON; IDispEventSimpleImpl::DispEventAdvise; END_SINK_MAP; IConnectionPointContainerImpl; IConnectionPointImpl; IDispEventImpl; OLE2CT; SINK_ENTRY_EX; SysAllocString; USES_CONVERSION; VARIANT; VariantClear; VariantCopy

Remarque :

Certains exemples, tels que celui-ci, n'ont pas été modifiés pour refléter les changements apportés aux Assistants, aux bibliothèques et au compilateur Visual C++, mais ils illustrent bien l'exécution de la tâche souhaitée.

Voir aussi

Autres ressources

Exemples d'attributs ATL