Marshal.Release(IntPtr) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定したインターフェイスの参照カウントをデクリメントします。
public:
static int Release(IntPtr pUnk);
[System.Security.SecurityCritical]
public static int Release (IntPtr pUnk);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static int Release (IntPtr pUnk);
public static int Release (IntPtr pUnk);
[<System.Security.SecurityCritical>]
static member Release : nativeint -> int
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member Release : nativeint -> int
static member Release : nativeint -> int
Public Shared Function Release (pUnk As IntPtr) As Integer
パラメーター
- pUnk
-
IntPtr
nativeint
解放するインターフェイス。
戻り値
pUnk
パラメーターで指定したインターフェイスの参照カウントの新しい値。
- 属性
例
次の例では、 メソッドを IUnknown
使用してマネージド オブジェクトのインターフェイスを取得する方法を GetIUnknownForObject 示します。 次に、 メソッドを呼び出してインターフェイス ポインターを解放します Release 。
using System;
using System.Runtime.InteropServices;
class Program
{
static void Run()
{
// Create an int object
int obj = 1;
Console.WriteLine("Calling Marshal.GetIUnknownForObject...");
// Get the IUnKnown pointer for the Integer object
IntPtr pointer = Marshal.GetIUnknownForObject(obj);
Console.WriteLine("Calling Marshal.Release...");
// Always call Marshal.Release to decrement the reference count.
Marshal.Release(pointer);
}
static void Main(string[] args)
{
Run();
}
}
Imports System.Runtime.InteropServices
Module Program
Sub Run()
' Dim an Integer object
Dim IntegerObject As Integer = 1
' Dim a pointer
Dim pointer As IntPtr
Console.WriteLine("Calling Marshal.GetIUnknownForObject...")
' Get the IUnKnown pointer for the Integer object
pointer = Marshal.GetIUnknownForObject(IntegerObject)
Console.WriteLine("Calling Marshal.Release...")
' Always call Marshal.Release to decrement the reference count.
Marshal.Release(pointer)
End Sub
Sub Main(ByVal args() As String)
Run()
End Sub
End Module
注釈
共通言語ランタイムは COM オブジェクトの参照カウントを自動的に管理するため、このメソッドを直接使用する必要が生じありません。 この値は、テスト目的でのみ使用します。 まれに、カスタム マーシャラーのテストなど、オブジェクトの有効期間を手動で操作する必要がある場合があります。 を呼び出すプログラムのみが を呼び出 Marshal.AddRef す Release必要があります。 参照カウントが 0 に達した後に を呼び出 Release すと、未定義の動作が発生します。
、、または Marshal.GetIDispatchForObject をMarshal.GetIUnknownForObject呼び出Marshal.GetComInterfaceForObjectして、IntPtrリリースへの IUnknown インターフェイス ポインターを表す値を取得できます。 これらのメソッドとマネージド オブジェクトの メソッドを Release 使用して、マネージド オブジェクトの COM 呼び出し可能ラッパーによって表される COM インターフェイスを解放することもできます。
適用対象
こちらもご覧ください
.NET