다음을 통해 공유


ComAwareEventInfo.RemoveEventHandler(Object, Delegate) 메서드

정의

COM 개체에서 이벤트 처리기를 분리합니다.

public:
 override void RemoveEventHandler(System::Object ^ target, Delegate ^ handler);
public override void RemoveEventHandler (object target, Delegate handler);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public override void RemoveEventHandler (object target, Delegate handler);
override this.RemoveEventHandler : obj * Delegate -> unit
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
override this.RemoveEventHandler : obj * Delegate -> unit
Public Overrides Sub RemoveEventHandler (target As Object, handler As Delegate)

매개 변수

target
Object

이벤트 대리자가 바인딩되는 대상 개체입니다.

handler
Delegate

이벤트 대리자입니다.

특성

예외

이 이벤트에 public remove 접근자가 없는 경우

전달된 처리기를 사용할 수 없는 경우

target 매개 변수가 null이고 이벤트가 static이 아닌 경우

또는

EventInfo가 대상에서 선언되지 않은 경우

참고: Windows 스토어 앱 또는 이식 가능한 클래스 라이브러리용 .NET에서 대신 catch Exception 합니다.

호출자에게 멤버에 대한 액세스 권한이 없는 경우

참고: Windows 스토어 앱 또는 이식 가능한 클래스 라이브러리용 .NET에서 기본 클래스 예외 를 MemberAccessException대신 catch합니다.

설명

이 메서드는 COM 개체에서 이벤트를 분리할 수 있다는 점을 제외하고 메서드와 비슷합니다 EventInfo.RemoveEventHandler(Object, Delegate) .

가 COM 개체인 경우 target 이 메서드는 메서드를 사용하여 이벤트에 대리자를 해제합니다 ComEventsHelper.Remove(Object, Guid, Int32, Delegate) .

RemoveEventHandler 에서는 해당 관리되는 대리자에게 호출을 전달하는 COM 이벤트 싱크의 등록을 취소할 수 있습니다. 다음 정보가 필요합니다.

  • 대상 개체 자체(target)입니다.

  • 원본 인터페이스의 GUID입니다.

  • 지정된 이벤트에 해당하는 COM 인터페이스의 메서드 DispID입니다.

  • COM 개체가 해당 이벤트(handler)를 트리거할 때 호출될 대리자입니다.

RemoveEventHandler 는 해당 COM 소스 인터페이스(생성자의 첫 번째 매개 변수 ComEventInterfaceAttribute.ComEventInterfaceAttribute(Type, Type) 로 지정됨)를 조회합니다. 그런 다음 이름이 이벤트 이름과 동일한 소스 인터페이스에서 메서드를 조회합니다. 소스 인터페이스의 값 GuidAttribute 은 에 전달되는 ComEventsHelper.Remove(Object, Guid, Int32, Delegate)GUID입니다. 메서드의 DispIDAttribute 값은 에 전달되는 ComEventsHelper.Remove(Object, Guid, Int32, Delegate)DispID 값입니다.

적용 대상