GCHandleType 列挙型

定義

GCHandle クラスが割り当てることのできるハンドルの種類を表します。

public enum class GCHandleType
public enum GCHandleType
[System.Serializable]
public enum GCHandleType
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum GCHandleType
type GCHandleType = 
[<System.Serializable>]
type GCHandleType = 
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type GCHandleType = 
Public Enum GCHandleType
継承
GCHandleType
属性

フィールド

Normal 2

この種類のハンドルは、非透過ハンドルを表します。つまり、このハンドルを使用して、その中に格納されている固定化されたオブジェクトのアドレスを解決することはできません。 この種類のハンドルは、オブジェクトを追跡し、ガベージ コレクターによって収集されないようにするために使用できます。 マネージド オブジェクトへの、ガベージ コレクターが検出できない唯一の参照をアンマネージド クライアントが保持している場合、この列挙体メンバーを使用すると便利です。

Pinned 3

この種類ハンドルは Normal に似ていますが、このハンドルを使用した場合は、固定オブジェクトのアドレスを取得できます。 これにより、ガベージ コレクターがそのオブジェクトを移動できなくなるため、ガベージ コレクターの効率は低下することになります。 割り当てられたハンドルをできる限り早く解放するには、Free() メソッドを使用します。

Weak 0

この種類のハンドルはオブジェクトを追跡するために使用しますが、そのオブジェクトを収集できるようにもします。 オブジェクトが収集された場合、GCHandle インスタンスの内容は 0 に設定されます。 Weak 参照はファイナライザーの実行前に 0 に設定されるため、ファイナライザーがそのオブジェクトを復活させた場合でも、Weak 参照は 0 のままになります。

WeakTrackResurrection 1

この種類のハンドルは Weak に似ていますが、ファイナライズ中にオブジェクトが復活された場合でも、このハンドルは 0 には設定されません。

適用対象

こちらもご覧ください