개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.06 01:19

COM Event Sink 관련 질문

목록
  • iOS연구가 4시간 전 2025.08.06 01:19 새글
  • 2
    1
안녕하세요 선생님, COM Event Sink에 대해 궁금한 점이 있습니다.

COM Event Sink는 어떤 역할을 하며, 사용하는 방법에 대해 알려주실 수 있을까요?

특히, COM Event Sink를 사용하여 이벤트를 처리할 때, 이벤트 핸들러 함수를 등록하는 방법에 대해 알려주실 수 있을까요?

또한, COM Event Sink를 사용하여 이벤트를 받을 때, 이벤트의 속성에 접근하는 방법에 대해 알려주실 수 있을까요?

COM Event Sink를 사용하여 이벤트를 처리하는 예제를 알려주실 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  4시간 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 41,773건 / 2 페이지

검색

게시물 검색