次の方法で共有


疎結合イベント

COM+ によって提供される疎結合イベント モデルは、発行側およびサブスクライバとイベント システムの間の遅延バインディング イベントまたはメソッド呼び出しをサポートします。イベント システムは、サーバーを繰り返しポーリングするのではなく、情報が利用できるときに関係先に通知します。

このサービスを使用するには、イベント クラスとイベント シンクを System.EnterpriseServices.ServicedComponent クラスから直接または間接的に派生させる必要があります。

メモ   シンクとイベント クラスの間に永続的または一時的なサブスクリプションを作成するには、スクリプトまたはマネージ コードで COM+ 管理オブジェクトを使用します。Windows のコントロール パネルからアクセス可能なコンポーネント サービス管理ツールを使用して、一時的なサブスクリプションを作成することもできます。

ILceMsg イベント インターフェイス、イベント クラス、イベント シンク、および発行側を作成する例を次に示します。イベント クラスとイベント シンクは、いずれも ILceMsg インターフェイスから派生させます。

イベント

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 
[C#]
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");
        }
    }
}

発行元

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 
[C#]
protected void Fire_Click (object sender, System.EventArgs e)
{
      ILceMsg evt = (ILceMsg) new LceClass();
      evt.EventMethod("Hello events");
}

参照

利用可能な COM+ サービスの概要 | System.EnterpriseServices