Cómo implementar eventos de correspondencia imprecisa
Ejemplo de código
En el procedimiento del siguiente ejemplo se muestra cómo implementar una clase de evento y un receptor de eventos que implemente una interfaz de eventos común, además de un editor para desencadenar un evento. Para obtener más información acerca del uso del modelo de eventos de correspondencia imprecisa COM+, vea Eventos de correspondencia imprecisa.
Para implementar eventos de correspondencia imprecisa
Defina una interfaz de eventos. Por ejemplo, en el siguiente código se define una interfaz de eventos denominada
IlceMsg
que tiene un método denominadoEventMethod
.Public Interface ILceMsg Sub EventMethod(message As String) End Interface
public interface ILceMsg { void EventMethod(string message); }
Defina una clase de evento que se derive de la clase System.EnterpriseServices.ServicedComponent e implemente la interfaz de eventos definida en el paso 1. Por ejemplo, el código siguiente define una clase de evento denominada
LceClass
.<EventClass()> _ Public Class LceClass Inherits ServicedComponent Implements ILceMsg Public Sub EventMethod(message As String) implements _ ILceMsg.EventMethod End Sub End Class
[EventClass] public class LceClass : ServicedComponent, ILceMsg { public void EventMethod(string message){} }
Defina una clase de receptor de evento que se derive de la clase System.EnterpriseServices.ServicedComponent e implemente la interfaz de eventos definida en el paso 1. Por ejemplo, el código siguiente define una clase de evento denominada
LceSink
.<EventClass()> _ 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
public class LceSink : ServicedComponent, ILceMsg { public void EventMethod(string message) { MessageBox.Show(message, "Event sink"); } }
Cree un editor de eventos que desencadene el evento LCE.
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
protected void Fire_Click (object sender, System.EventArgs e) { ILceMsg evt = (ILceMsg) new LceClass(); evt.EventMethod("Hello events"); }
Ejemplo
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
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");
}
}
}
Publisher
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
//Publisher
protected void Fire_Click (object sender, System.EventArgs e)
{
ILceMsg evt = (ILceMsg) new LceClass();
evt.EventMethod("Hello events");
}
Consulte también
Referencia
System.EnterpriseServices Namespace
Conceptos
Eventos de correspondencia imprecisa
Resumen de los servicios COM+ disponibles
Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.