이중 인터페이스 및 이벤트

이벤트 인터페이스를 이중으로 디자인할 수 있지만 그렇게 하지 않는 데는 여러 가지 좋은 디자인 이유가 있습니다. 근본적인 이유는 이벤트의 원본이 vtable을 통해서만 또는 둘 다 아닌 이벤트를 통해 Invoke서만 발생하기 때문입니다. 이벤트 원본이 직접 vtable 메서드 호출 IDispatch 로 이벤트를 발생시키는 경우 메서드는 사용되지 않으며 인터페이스가 순수 vtable 인터페이스여야 한다는 것이 분명합니다. 이벤트 원본이 이벤트를 호출 Invoke로 발생시키는 경우 vtable 메서드는 사용되지 않으며 인터페이스가 dispinterface여야 한다는 것이 분명합니다. 이벤트 인터페이스를 이중으로 정의하는 경우 클라이언트가 사용되지 않는 인터페이스의 일부를 구현하도록 요구하게 됩니다.

참고 항목

이 인수는 일반적으로 이중 인터페이스에는 적용되지 않습니다. 구현 관점에서 이중은 광범위한 클라이언트에서 액세스할 수 있는 인터페이스를 구현하는 빠르고 편리하며 잘 지원되는 방법입니다.

이중 이벤트 인터페이스를 피해야 하는 추가 이유가 있습니다. Visual Basic과 Internet Explorer 모두 지원되지 않습니다.

참고 항목

이중 인터페이스 및 ATL