共用方式為


HandleRef 結構

定義

將保有控制代碼的 Managed 物件包裝至要使用平台叫用傳遞至 Unmanaged 程式碼的資源。

public value class HandleRef
public readonly struct HandleRef
public struct HandleRef
[System.Runtime.InteropServices.ComVisible(true)]
public struct HandleRef
type HandleRef = struct
[<System.Runtime.InteropServices.ComVisible(true)>]
type HandleRef = struct
Public Structure HandleRef
繼承
HandleRef
屬性

備註

重要

從 .NET Framework 2.0 開始,類別的功能 HandleRef 已由 SafeHandle 類別及其衍生類別以及 CriticalHandle 類別取代。

如果您使用平臺調用來呼叫 Managed 物件,而且對象在平台調用呼叫之後不會在其他地方參考,則垃圾收集行程可以完成 Managed 物件。 此動作會釋放資源並使句柄失效,導致平台調用呼叫失敗。 包裝句柄, HandleRef 保證在平台調用呼叫完成之前,不會垃圾收集Managed物件。 如需平台調用服務的描述,請參閱 取用非受控 DLL 函式

HandleRef 值類型,例如 GCHandle,是 Interop 封送處理器所辨識的特殊類型。 一般的非固定 GCHandle 也會防止不及時的垃圾收集,但 HandleRef 可提供更佳的效能。 雖然最好在平台調用呼叫期間使用 HandleRef 讓物件保持運作,但您也可以使用相同的 GC.KeepAlive 方法。

HandleRef 構函式接受兩個 Object 參數:代表包裝函式的 ,以及 IntPtr 表示 Unmanaged 句柄的 。 Interop 封送處理器只會將句柄傳遞至 Unmanaged 程式代碼,並保證包裝函式 (當做第一個參數傳遞至) 的建構 HandleRef 函式在呼叫期間保持運作。

建構函式

HandleRef(Object, IntPtr)

使用要包裝的物件和 Unmanaged 程式碼所使用的資源控制代碼,初始化 HandleRef 類別的新執行個體。

屬性

Handle

取得資源控制代碼。

Wrapper

取得存有資源控制代碼的物件。

方法

ToIntPtr(HandleRef)

傳回 HandleRef 物件的內部整數表示。

運算子

Explicit(HandleRef to IntPtr)

傳回指定 HandleRef 物件的資源控制代碼。

適用於

另請參閱