다음을 통해 공유


방법: LCE(느슨하게 결합된 이벤트) 구현

코드 예제

다음 절차와 예제에서는 공용 이벤트 인터페이스와 이벤트를 발생시키는 게시자를 구현하는 이벤트 클래스 및 이벤트 싱크를 구현하는 방법을 보여 줍니다. COM+ LCE 모델 사용에 대한 자세한 내용은 LCE(느슨하게 결합된 이벤트)를 참조하십시오.

LCE를 구현하려면

  1. 이벤트 인터페이스를 정의합니다. 예를 들어, 다음 코드에서는 EventMethod라는 메서드가 있는 IlceMsg라는 이벤트 인터페이스를 정의합니다.

    Public Interface ILceMsg
        Sub EventMethod(message As String)
    End Interface
    
    public interface ILceMsg
    {
        void EventMethod(string message);
    }
    
  2. System.EnterpriseServices.ServicedComponent 클래스에서 파생되는 이벤트 클래스를 정의하고 1단계에서 정의한 이벤트 인터페이스를 구현합니다. 예를 들어, 다음 코드에서는 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. System.EnterpriseServices.ServicedComponent 클래스에서 파생되는 이벤트 싱크 클래스를 정의하고 1단계에서 정의한 이벤트 인터페이스를 구현합니다. 예를 들어, 다음 코드에서는 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. 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");
    }
    

예제

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

참고 항목

참조

System.EnterpriseServices Namespace

개념

LCE(느슨하게 결합된 이벤트)
사용 가능한 COM+ 서비스 요약

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.