Freigeben über


Lose verknüpfte Ereignisse

Das durch COM+ bereitgestellte Modell für lose verknüpfte Ereignisse unterstützt spät gebundene Ereignisse oder Methodenaufrufe zwischen Publisher und Abonnent und dem Ereignissystem. Anstatt wiederholt Abfragen an den Server zu senden, informiert das Ereignissystem Interessenten durch eine Meldung, wenn eine Information zur Verfügung steht.

Dieser Dienst kann nur von Ereignisklassen und Ereignisempfängern verwendet werden, die direkt oder indirekt von der System.EnterpriseServices.ServicedComponent-Klasse abgeleitet wurden.

Hinweis   Um beständige oder flüchtige Abonnements zwischen dem Empfänger und der Ereignisklasse zu erstellen, sollten Sie COM+-Verwaltungsobjekte mit Skripts oder verwaltetem Code verwenden. Mit dem Verwaltungstool Komponentendienste können Sie auch flüchtige Abonnements erstellen, auf die aus der Windows-Systemsteuerung zugegriffen werden kann.

Im folgenden Beispiel werden eine Ereignisschnittstelle, ILceMsg genannt, eine Ereignisklasse, ein Ereignisempfänger und ein Publisher erstellt. Sowohl die Ereignisklasse als auch der Ereignisempfänger werden von der ILceMsg-Schnittstelle abgeleitet.

Ereignis

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

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 
[C#]
protected void Fire_Click (object sender, System.EventArgs e)
{
      ILceMsg evt = (ILceMsg) new LceClass();
      evt.EventMethod("Hello events");
}

Siehe auch

Zusammenfassung verfügbarer COM+-Dienste |System.EnterpriseServices-Namespace