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可攜式類別庫中,改為攔截 Exception

呼叫端無權存取該成員。

注意:在 適用於 Windows 市集應用程式的 .NET可攜式類別庫中,改為攔截基類例外狀況 MemberAccessException

備註

這個方法與 EventInfo.RemoveEventHandler(Object, Delegate) 方法類似,不同之處在於它可讓您從 COM 物件卸離事件。

如果 target 是 COM 對象,這個方法會使用 ComEventsHelper.Remove(Object, Guid, Int32, Delegate) 方法釋放事件委派。

RemoveEventHandler 有助於取消註冊 COM 事件接收,以將呼叫轉送至對應的 Managed 委派。 它需要下列資訊:

  • 目標物件本身 (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 值。

適用於