GCHandleType GCHandleType GCHandleType GCHandleType Enum

定義

GCHandle クラスが割り当てることのできるハンドルの種類を表します。Represents the types of handles the GCHandle class can allocate.

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

フィールド

Normal Normal Normal Normal 2

この種類のハンドルは、非透過ハンドルを表します。つまり、このハンドルを使用して、その中に格納されている固定化されたオブジェクトのアドレスを解決することはできません。This handle type represents an opaque handle, meaning you cannot resolve the address of the pinned object through the handle. この種類のハンドルは、オブジェクトを追跡し、ガベージ コレクターによって収集されないようにするために使用できます。You can use this type to track an object and prevent its collection by the garbage collector. マネージド オブジェクトへの、ガベージ コレクターが検出できない唯一の参照をアンマネージド クライアントが保持している場合、この列挙体メンバーを使用すると便利です。This enumeration member is useful when an unmanaged client holds the only reference, which is undetectable from the garbage collector, to a managed object.

Pinned Pinned Pinned Pinned 3

この種類ハンドルは Normal に似ていますが、このハンドルを使用した場合は、固定オブジェクトのアドレスを取得できます。This handle type is similar to Normal, but allows the address of the pinned object to be taken. これにより、ガベージ コレクターがそのオブジェクトを移動できなくなるため、ガベージ コレクターの効率は低下することになります。This prevents the garbage collector from moving the object and hence undermines the efficiency of the garbage collector. 割り当てられたハンドルをできる限り早く解放するには、Free() メソッドを使用します。Use the Free() method to free the allocated handle as soon as possible.

Weak Weak Weak Weak 0

この種類のハンドルはオブジェクトを追跡するために使用しますが、そのオブジェクトを収集できるようにもします。This handle type is used to track an object, but allow it to be collected. オブジェクトが収集された場合、GCHandle インスタンスの内容は 0 に設定されます。When an object is collected, the contents of the GCHandle are zeroed. Weak 参照はファイナライザーの実行前に 0 に設定されるため、ファイナライザーがそのオブジェクトを復活させた場合でも、Weak 参照は 0 のままになります。Weak references are zeroed before the finalizer runs, so even if the finalizer resurrects the object, the Weak reference is still zeroed.

WeakTrackResurrection WeakTrackResurrection WeakTrackResurrection WeakTrackResurrection 1

この種類のハンドルは Weak に似ていますが、ファイナライズ中にオブジェクトが復活された場合でも、このハンドルは 0 には設定されません。This handle type is similar to Weak, but the handle is not zeroed if the object is resurrected during finalization.

適用対象

こちらもご覧ください