HOW TO:實作鬆散耦合的事件
程式碼範例
以下程序與範例示範如何實作事件類別和事件接收 (Event Sink),它們會實作通用事件介面以及引發事件的發行者 (Publisher)。如需使用 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
概念
Copyright © 2007 by Microsoft Corporation. All rights reserved.