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

事件委托。

属性

例外

该事件没有公共 remove 访问器。

无法使用传入的处理程序。

target 参数为 null,并且此事件不是静态事件。

未在目标上声明 EventInfo

注意:在 适用于 Windows 应用商店应用的 .NET可移植类库中,请改为 catch Exception

调用方没有对成员的访问权限。

注意:在 适用于 Windows 应用商店应用的 .NET可移植类库中,改为捕获基类异常 MemberAccessException

注解

此方法类似于 EventInfo.RemoveEventHandler(Object, Delegate) 方法,只不过它允许你从 COM 对象中分离事件。

如果 target 是 COM 对象,则此方法使用 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 值。

适用于