HandleRef 結構
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將保有控制代碼的 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
- 繼承
- 屬性
備註
重要
從 .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 物件的資源控制代碼。 |