Inscription d’un abonnement temporaire
Les abonnements temporaires demandent un événement pour un objet abonné spécifique qui existe déjà. Les abonnements temporaires sont stockés dans le catalogue COM+, mais l’abonnement est supprimé si le système d’événements ou le système d’exploitation est arrêté. Contrairement aux abonnements persistants, les abonnements temporaires sont liés à un objet particulier et sont stockés uniquement dans le système d’événements. En cas de problème avec le système d’événements ou le système d’exploitation, l’abonnement disparaît. Les abonnements temporaires peuvent être plus efficaces que les abonnements persistants, mais vous devez gérer leurs cycles de vie d’objet.
Les abonnements temporaires ne peuvent pas être définis à l’aide de l’outil d’administration des services de composants. Vous devez utiliser les interfaces administratives COM+ pour créer ou mettre à jour un abonnement temporaire.
Visual Basic
La procédure suivante décrit comment créer un abonnement temporaire à l’aide de Microsoft Visual Basic :
Spécifiez un abonnement comme temporaire en ajoutant une nouvelle entrée à la collection TransientSubscriptions et en définissant la propriété SubscriberInterface sur l’interface IUnknown de l’objet abonné. Les événements COM+ ne créent pas d’instance de l’objet abonné lors du déclenchement d’un événement, mais utilisent plutôt l’instance que vous spécifiez. Les événements COM+ contiennent un nombre de références pour l’objet abonné jusqu’à ce que l’abonnement soit supprimé du système.
Créez une application serveur COM+ (un .exe, un .dll ou un fichier .ocx) avec un objet qui implémente les interfaces ou méthodes auxquelles vous souhaitez vous abonner.
Créez votre abonnement temporaire à l’aide du code suivant, en transmettant le CLSID de l’objet de classe d’événements et l’instance de l’objet abonné. À l’aide de l’outil d’administration services de composants, vous pouvez obtenir la propriété EventCLSID en cliquant avec le bouton droit sur le composant COM+, en sélectionnant Propriétés et en sélectionnant l’onglet Général .
Public Function CreateTransientSubscription( _ ByVal clsid As String, ByVal objref As Object) As String Dim oCOMAdminCatalog As COMAdmin.COMAdminCatalog Dim oTSCol As COMAdminCatalogCollection Dim oSubscription As ICatalogObject Dim objvar As Variant On Error GoTo CreateTransientSubscriptionError Set oCOMAdminCatalog = CreateObject("COMAdmin.COMAdminCatalog") 'Gets the TransientSubscriptions collection Set oTSCol = oCOMAdminCatalog.GetCollection( _ "TransientSubscriptions") Set oSubscription = oTSCol.Add Set objvar = objref oSubscription.Value("SubscriberInterface") = objref oSubscription.Value("EventCLSID") = clsid oSubscription.Value("Name") = "TransientSubscription" oTSCol.SaveChanges CreateTransientSubscription = oSubscription.Value("ID") Set oSubscription = Nothing Set oTSCol = Nothing Set oCOMAdminCatalog = Nothing Set objvar = Nothing Exit Function CreateTransientSubscriptionError: CreateTransientSubscription = "" Err.Raise Err.Number, "[CreateTransientSubscription]" & _ Err.Source, Err.Description End Function
L’exemple suivant montre comment appeler la fonction CreateTransientSubscription pour s’abonner à une interface appelée IStockTicker, qui a une méthode appelée UpdateStock.
Créez une classe d’événements qui prend en charge l’interface IStockTicker, qui a une méthode, UpdateStock.
Dans votre projet d’abonné, ajoutez une classe qui implémente l’interface IStockTicker.
Lorsque vous souhaitez vous abonner, exécutez le code suivant :
Dim oMyTicker As Object Dim sSubscriptionID As String Set oMyTicker = CreateObject("TheProject.CMyTicker") sSubscriptionID = CreateTransientSubscription( _ "{..CLSID for the Event Class..}", oMyTicker)
La fonction CreateTransientSubscription retourne une chaîne, qui est un GUID qui peut être utilisé comme handle ou cookie pour révoquer l’abonnement ultérieurement. Pour supprimer l’abonnement, appelez la méthode Remove de COMAdminCatalogCollection sur la collection TransientSubscriptions , en transmettant l’index correspondant à l’abonnement avec le GUID précédemment reçu.
Rubriques connexes