Procédure d'implémentation des événements faiblement couplés
Exemple de code
La procédure et l'exemple ci-dessous montrent comment implémenter une classe d'événements et un récepteur d'événements qui implémentent une interface d'événement courant, ainsi qu'un éditeur pour déclencher un événement. Pour plus d'informations sur le modèle d'événements faiblement couplés COM+, voir la rubrique sur lesévénements faiblement couplés.
Pour implémenter des événements faiblement couplés
Définissez une interface d'événement. Par exemple, le code suivant définit une interface d'événement appelée
IlceMsg
qui possède une méthode appeléeEventMethod
.Public Interface ILceMsg Sub EventMethod(message As String) End Interface
public interface ILceMsg { void EventMethod(string message); }
Définissez une classe d'événements qui dérive de la classe System.EnterpriseServices.ServicedComponent et qui implémente l'interface d'événement définie à l'étape 1. Par exemple, l'exemple de code suivant définit une classe d'événements appelée
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){} }
Définissez une classe de récepteurs d'événements qui dérive de la classe System.EnterpriseServices.ServicedComponent et qui implémente l'interface d'événement définie à l'étape 1. Par exemple, l'exemple de code suivant définit une classe de récepteurs d'événements appelée
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"); } }
Créez un éditeur d'événements pour déclencher le 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"); }
Exemple
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");
}
Voir aussi
Référence
System.EnterpriseServices Namespace
Concepts
Événements faiblement couplés
Résumé des services COM+ disponibles
Copyright ©2007 par Microsoft Corporation. Tous droits réservés.