Share via


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

  1. 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 denominado EventMethod.

    Public Interface ILceMsg
        Sub EventMethod(message As String)
    End Interface
    
    public interface ILceMsg
    {
        void EventMethod(string message);
    }
    
  2. 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){}
    }
    
  3. 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");
        }
    }
    
  4. 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.