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)