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
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.GetComInterfaceForObject、 Marshal.GetIUnknownForObject或 Marshal.GetIDispatchForObject ,以取得 IntPtr 代表釋放 之 IUnknown 介面指標的值。 您也可以使用這些方法和 Release Managed物件上的方法,釋放受管理物件的 COM 可呼叫包裝函式所代表的 COM 介面。