Verfahrensweise: Implementieren von flexibel verknüpften Ereignissen

Codebeispiel

Das folgende Beispiel und Verfahren zeigt, wie eine Ereignisklasse und eine Ereignissenke implementiert werden, die eine gemeinsame Ereignisschnittstelle implementieren sowie einen Herausgeber zum Auslösen eines Ereignisses. Weitere Informationen zum Verwenden des COM+-Modells flexibel verknüpfter Ereignisse (Loosely Coupled Events, LCE) finden Sie unter Flexibel verknüpfte Ereignisse.

So implementieren Sie flexibel verknüpfte Ereignisse

  1. Definieren Sie ein Ereignisschnittstelle. Im folgenden Code wird beispielsweise eine Ereignisinstanz namens IlceMsg definiert, die über eine Methode namens EventMethod verfügt.

    Public Interface ILceMsg
        Sub EventMethod(message As String)
    End Interface
    
    public interface ILceMsg
    {
        void EventMethod(string message);
    }
    
  2. Definieren Sie eine Ereignisklasse, die von der System.EnterpriseServices.ServicedComponent-Klasse abgeleitet wird und die in Schritt 1 definierte Ereignisschnittstelle implementiert. Im folgenden Code wird beispielsweise eine Ereignisklasse namens LceClass definiert.

    <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. Definieren Sie eine Ereignissenkenklasse, die von der System.EnterpriseServices.ServicedComponent-Klasse abgeleitet wird und die in Schritt 1 definierte Ereignisschnittstelle implementiert. Im folgenden Code wird beispielsweise eine Ereignissenkenklasse namens LceSink definiert.

    <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. Erstellen Sie einen Ereignisherausgeber, um flexibel verknüpfte Ereignisse (LCE) auszulösen.

    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");
    }
    

Beispiel

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");
}

Siehe auch

Referenz

System.EnterpriseServices Namespace

Konzepte

Flexibel verknüpfte Ereignisse
Zusammenfassung der verfügbaren COM+-Dienste

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.