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 的參與者。

被傳入的處理者無法使用。

參數是targetnull,事件不是靜態的。

-或-

目標 EventInfo 上沒有宣告。

來電者無權存取該成員。

備註

此方法與 COM 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 值。

適用於