Partager via


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

  1. 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ée EventMethod.

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

Footer image

Copyright ©2007 par Microsoft Corporation. Tous droits réservés.