Compartir a través de


Eventos de correspondencia imprecisa

El modelo de eventos de correspondencia imprecisa que proporciona COM+ admite eventos de enlace en tiempo de ejecución o llamadas a métodos entre el editor y el suscriptor y el sistema de eventos. En lugar de sondear el servidor repetidas veces, el sistema de eventos notifica a las partes interesadas la información según vaya estando disponible.

Para utilizar este servicio, la clase de evento y el receptor del evento deben derivar directa o indirectamente de la clase System.EnterpriseServices.ServicedComponent.

Nota   Para crear suscripciones persistentes o transitorias entre el receptor y la clase del evento, use los objetos de administración COM+ con secuencias de comandos o código administrado. Puede crear también suscripciones transitorias utilizando la herramienta administrativa de servicios de componentes, que se encuentra accesible desde el Panel de control de Windows.

En el ejemplo siguiente se crea una interfaz de eventos, ILceMsg, una clase de eventos, un receptor de eventos y un editor. La clase de eventos y el receptor de eventos derivan de la interfaz ILceMsg.

Evento

Imports System
Imports System.IO
Imports System.Reflection
Imports System.EnterpriseServices
Imports System.Runtime.InteropServices

<assembly: ApplicationName("EventDemo")>
<assembly: ApplicationActivation(ActivationOption.Library)>
<assembly: AssemblyKeyFile("EventDemoSvr.snk")>

Namespace EventDemo
   Public Interface ILceMsg
      Sub EventMethod(message As String)
   End Interface    
      <EventClass()> _
      Public Class LceClass 
Inherits ServicedComponent Implements ILceMsg 
      Public Sub EventMethod(message As String) implements _
            ILceMsg.EventMethod
      End Sub 
   End Class 
    
   Public Class LceSink 
   Inherits ServicedComponent Implements ILceMsg 
      Public Sub EventMethod(message As String) implements _
            ILceMsg.EventMethod
         MessageBox.Show(message, "Event sink")
      End Sub
   End Class 
End Namespace 
[C#]
using System;
using System.IO;
using System.Reflection;
using System.EnterpriseServices;
using System.Runtime.InteropServices;

[assembly: ApplicationName("EventDemo")]
[assembly: ApplicationActivation(ActivationOption.Library)]
[assembly: AssemblyKeyFile("EventDemoSvr.snk")]

namespace EventDemo
{
    public interface ILceMsg
    {
        void EventMethod(string message);
    }

    [EventClass]
    public class LceClass : ServicedComponent, ILceMsg
    {
        public void EventMethod(string message){}
    }

    public class LceSink : ServicedComponent, ILceMsg
    {   
        public void EventMethod(string message)
        {
            MessageBox.Show(message, "Event sink");
        }
    }
}

Editor

Protected Sub Fire_Click(sender As Object, e As System.EventArgs)_
Handles fireEvent.Click
      Dim evt As ILceMsg = CType(New LceClass(), ILceMsg)
      evt.EventMethod("Hello events")
End Sub 
[C#]
protected void Fire_Click (object sender, System.EventArgs e)
{
      ILceMsg evt = (ILceMsg) new LceClass();
      evt.EventMethod("Hello events");
}

Vea también

Resumen de servicios COM+ disponibles |System.EnterpriseServices (Espacio de nombres)