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
Definieren Sie ein Ereignisschnittstelle. Im folgenden Code wird beispielsweise eine Ereignisinstanz namens
IlceMsg
definiert, die über eine Methode namensEventMethod
verfügt.Public Interface ILceMsg Sub EventMethod(message As String) End Interface
public interface ILceMsg { void EventMethod(string message); }
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){} }
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"); } }
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
Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.