
COM Event Sink는 COM 객체 간의 이벤트 통신을 위한 메커니즘으로, COM 객체가 발생시킨 이벤트를 다른 객체가 수신하고 처리할 수 있도록 합니다.
COM Event Sink를 사용하는 방법은 다음과 같습니다.
1. COM 객체가 이벤트를 발생시키는 메서드를 구현합니다.
2. 이벤트를 수신할 객체가 이벤트 핸들러 함수를 구현합니다.
3. 이벤트 핸들러 함수를 등록하여 이벤트를 수신합니다.
이벤트 핸들러 함수를 등록하는 방법은 다음과 같습니다.
- COM 객체가 제공하는 `IConnectionPointContainer` 인터페이스를 사용하여 이벤트 핸들러 함수를 등록합니다.
- `Advise` 메서드를 호출하여 이벤트 핸들러 함수를 등록합니다.
이벤트의 속성에 접근하는 방법은 다음과 같습니다.
- 이벤트 객체의 `Properties` 컬렉션을 사용하여 이벤트의 속성을 접근합니다.
- `Item` 메서드를 호출하여 이벤트의 속성을 접근합니다.
COM Event Sink를 사용하여 이벤트를 처리하는 예제는 다음과 같습니다.
#hostingforum.kr
csharp
using System;
using System.Runtime.InteropServices;
// COM 객체
[ComVisible(true)]
public class EventSinkObject
{
public event EventHandler MyEvent;
public void RaiseEvent()
{
if (MyEvent != null)
{
MyEvent(this, EventArgs.Empty);
}
}
}
// 이벤트 핸들러 함수
public class EventSink
{
public void OnMyEvent(object sender, EventArgs e)
{
Console.WriteLine("이벤트 발생!");
}
}
class Program
{
static void Main()
{
// COM 객체 생성
EventSinkObject obj = new EventSinkObject();
// 이벤트 핸들러 함수 등록
obj.MyEvent += new EventHandler(EventSink.OnMyEvent);
// 이벤트 발생
obj.RaiseEvent();
}
}
이 예제에서는 `EventSinkObject` 클래스가 이벤트를 발생시키는 메서드를 구현하고, `EventSink` 클래스가 이벤트 핸들러 함수를 구현합니다. `Main` 메서드에서는 COM 객체를 생성하고 이벤트 핸들러 함수를 등록한 후 이벤트를 발생시킵니다.
2025-08-06 01:20