
COM Event Sink는 COM 객체의 이벤트를 처리하기 위한 메커니즘입니다. COM 객체는 이벤트를 발생시키고, Event Sink는 이러한 이벤트를 수신하여 처리합니다. Event Sink는 COM 객체의 이벤트를 처리하는 데 사용되는 인터페이스입니다.
Event Sink를 구현할 때 필요한 인터페이스는 IConnectionPointContainer 인터페이스를 구현하는 클래스가 필요합니다. 이 인터페이스는 IConnectionPoint 인터페이스를 반환하는 GetConnectionPoint 메서드를 제공합니다.
IConnectionPoint 인터페이스는 Advise 메서드를 제공하여 Event Sink가 이벤트를 수신할 수 있도록 합니다. 이 메서드는 Event Sink가 이벤트를 수신하기 위해 등록하는 메서드입니다.
Event Sink를 사용하여 이벤트를 처리하는 예제 코드는 다음과 같습니다.
#hostingforum.kr
csharp
using System;
using System.Runtime.InteropServices;
// COM 객체의 인터페이스
[Guid("12345678-1234-1234-1234-123456789012")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IMyEvent
{
void MyEvent();
}
// COM 객체
[Guid("12345678-1234-1234-1234-123456789012")]
[ClassInterface(ClassInterfaceType.None)]
public class MyEventObject : IMyEvent
{
public void MyEvent()
{
Console.WriteLine("MyEvent 발생");
}
}
// Event Sink
[Guid("12345678-1234-1234-1234-123456789013")]
[ClassInterface(ClassInterfaceType.None)]
public class MyEventSink : IConnectionPointContainer
{
private IMyEvent _myEvent;
public void Advise(IMyEvent eventObject)
{
_myEvent = eventObject;
}
public void MyEvent()
{
if (_myEvent != null)
{
_myEvent.MyEvent();
}
}
}
class Program
{
static void Main(string[] args)
{
// COM 객체 생성
MyEventObject myEventObject = new MyEventObject();
// Event Sink 생성
MyEventSink myEventSink = new MyEventSink();
// Event Sink가 COM 객체의 이벤트를 수신하기 위해 등록
myEventSink.Advise(myEventObject);
// COM 객체의 이벤트 발생
myEventObject.MyEvent();
// Event Sink가 이벤트를 처리
myEventSink.MyEvent();
}
}
COM Event Sink를 사용하여 이벤트를 처리하는 것이 중요합니다. COM 객체의 이벤트를 처리하는 데 사용되는 메커니즘으로, COM 객체의 이벤트를 수신하여 처리할 수 있도록 합니다. Event Sink를 사용하여 이벤트를 처리하는 것은 COM 객체의 이벤트를 처리하는 데 유용한 도구입니다.
2025-04-22 22:41