Marshal.Release(IntPtr) 方法

定義

遞減指定介面上的參考次數。

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 Managed 物件的 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

備註

Common Language Runtime 會為您管理 COM 物件的參考計數,因此不需要直接使用此方法。 僅針對測試用途使用此值。 在少數情況下,例如測試自訂封送處理器,您可能會發現需要手動操作物件的存留期。 只有呼叫 Marshal.AddRef 的程式應該呼叫 Release 。 在參考計數達到零之後呼叫 Release 會導致未定義的行為。

您可以呼叫 Marshal.GetComInterfaceForObjectMarshal.GetIUnknownForObjectMarshal.GetIDispatchForObject 來取得值 IntPtr ,表示要釋放的 IUnknown 介面指標。 您也可以使用這些方法和 Release Managed 物件上的 方法,釋放受管理物件的 COM 可呼叫包裝函式所代表的 COM 介面。

適用於

另請參閱