Partager via


Interception d’appels inter-contextes

Lorsqu’un objet est activé dans un contexte donné, les appels ultérieurs vers ou depuis celui-ci, dans le contexte, sont gérés différemment des appels au-delà de la limite de contexte. Les appels au-delà de la limite de contexte sont gérés avec des proxys légers. Ces proxys gèrent toutes les médiations nécessaires pour ajuster l’environnement d’exécution d’un environnement qui prend en charge l’appelant à un environnement qui prend en charge l’appelé. Ce processus est appelé interception.

L’interception d’appels inter-contextes est nécessaire, car les objets dans différents contextes ont des exigences différentes au moment de l’exécution, c’est précisément la raison des contextes. COM+ intercepte toutes les références d’objet que vous passez en tant que paramètres de méthode et les convertit automatiquement en proxys afin qu’ils soient utilisables dans le nouveau contexte.

Si vous partagez des références d’objets au-delà des limites de contexte par d’autres moyens (par exemple, dans des variables globales), vous devez toujours utiliser CoMarshalInterface et CoUnmarshalInterface. Ces fonctions peuvent traduire une référence d’objet en un proxy utilisable dans un autre contexte. Ne partagez jamais de référence d’objet brut entre les limites du contexte.

Le comportement des appels dans un contexte peut avoir des conséquences indésirables dans le cas d’objets exposant des interfaces qui ne peuvent pas être marshalées. Dans ce cas, vous voudrez probablement insister pour que l’objet qui ne peut pas être marshalé soit activé uniquement dans le contexte de son appelant et jamais dans son propre contexte. Pour ce faire, sélectionnez l’option de contexte Doit être activé dans le contexte de l’appelant sous l’ongletActivation de la page Propriétés du composant. (Pour obtenir des instructions pas à pas, consultez Application de l’activation dans le contexte de l’appelant .)

Activation de contexte