Marshal.Release(IntPtr) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengurangi jumlah referensi pada antarmuka yang ditentukan.
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
Parameter
- pUnk
-
IntPtr
nativeint
Antarmuka yang akan dilepaskan.
Mengembalikan
Nilai baru dari jumlah referensi pada antarmuka yang ditentukan oleh pUnk
parameter .
- Atribut
Contoh
Contoh berikut menunjukkan cara mengambil IUnknown
antarmuka untuk objek terkelola menggunakan GetIUnknownForObject metode . Contohnya kemudian merilis penunjuk antarmuka dengan memanggil Release metode .
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
Keterangan
Runtime bahasa umum mengelola jumlah referensi objek COM untuk Anda, sehingga tidak perlu menggunakan metode ini secara langsung. Gunakan nilai ini hanya untuk tujuan pengujian. Dalam kasus yang jarang terjadi, seperti menguji marshaler kustom, Anda mungkin merasa perlu memanipulasi masa pakai objek secara manual. Hanya program yang memanggil Marshal.AddRef yang harus memanggil Release. Release Panggilan setelah jumlah referensi mencapai nol menyebabkan perilaku yang tidak terdefinisi.
Anda dapat memanggil Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObject, atau Marshal.GetIDispatchForObject untuk mendapatkan IntPtr nilai yang mewakili penunjuk antarmuka IUnknown untuk dirilis. Anda juga dapat menggunakan metode ini dan Release metode pada objek terkelola untuk merilis antarmuka COM yang diwakili oleh COM Callable Wrapper objek terkelola.