代码示例
以下过程和示例说明了如何实现事件类和事件接收器(用于实现公共事件接口)以及如何实现用于触发事件的发布程序。有关使用 COM+ 松耦合事件模型的详细信息,请参阅松耦合事件。
实现松耦合事件
- 定义事件接口。例如,下面的代码定义了一个名为 - IlceMsg的事件接口,其中包含名为- EventMethod的方法。- Public Interface ILceMsg Sub EventMethod(message As String) End Interface- public interface ILceMsg { void EventMethod(string message); }
- 定义从 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){} }
- 定义从 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"); } }
- 创建用于触发 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
概念
.gif)
版权所有 (C) 2007 Microsoft Corporation。保留所有权利。