다음을 통해 공유


이벤트 처리 원리

모든 이벤트 처리에 공통적인 세 가지 단계가 있습니다. 다음을 수행해야 합니다.

  • 개체에 이벤트 인터페이스를 구현합니다.

  • 개체가 이벤트를 수신하도록 이벤트 원본에 알려 줍니다.

  • 개체가 더 이상 이벤트를 수신할 필요가 없는 경우 이벤트 원본을 프로비전 해제합니다.

이벤트 인터페이스를 구현하는 방법은 해당 형식에 따라 달라집니다. 이벤트 인터페이스는 vtable, 이중 또는 dispinterface일 수 있습니다. 인터페이스를 정의하는 것은 이벤트 원본의 디자이너에 달려 있습니다. 해당 인터페이스를 구현하는 것은 사용자의 달려 있습니다.

참고 항목

이벤트 인터페이스가 이중일 수 없는 기술적 이유는 없지만 이중 인터페이스를 사용하지 않는 데는 여러 가지 좋은 디자인 이유가 있습니다. 그러나 이는 이벤트 원본의 디자이너/구현자가 결정한 것입니다. 이벤트의 관점에서 작업하기 때문에 이중 이벤트 sink인터페이스를 구현하는 것 외에도 선택할 수 있는 가능성을 허용해야 합니다. 이중 인터페이스에 대한 자세한 내용은 이중 인터페이스 및 ATL을 참조하세요.

이벤트 원본에 대한 조언은 다음 세 단계로 나눌 수 있습니다.

이벤트 수신에 대한 관심을 성공적으로 등록하면 원본 개체에서 발생한 이벤트에 따라 개체의 이벤트 인터페이스에 대한 메서드가 호출됩니다. 더 이상 이벤트를 수신할 필요가 없는 경우 IConnectionPoint::Unadvise를 통해 쿠키를 연결 지점으로 다시 전달할 수 있습니다. 이렇게 하면 원본과 싱크 간의 연결이 끊어지게 됩니다.

이벤트를 처리할 때 참조 주기를 방지합니다.

참고 항목

이벤트 처리