Marshal.Release(IntPtr) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirtilen arabirimdeki başvuru sayısını azaltma.
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
Parametreler
- pUnk
-
IntPtr
nativeint
Yayın için arabirim.
Döndürülenler
parametresi tarafından pUnk
belirtilen arabirimdeki başvuru sayısının yeni değeri.
- Öznitelikler
Örnekler
Aşağıdaki örnek, yöntemini kullanarak yönetilen bir nesne için arabirimin nasıl alınduğunu IUnknown
GetIUnknownForObject gösterir. Örnek daha sonra yöntemini çağırarak arabirim işaretçisini Release serbest bırakır.
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
Açıklamalar
Ortak dil çalışma zamanı, bir COM nesnesinin başvuru sayısını sizin için yönetir ve bu yöntemin doğrudan kullanılmasını gereksiz hale getirir. Bu değeri yalnızca test amacıyla kullanın. Özel bir sıralayıcıyı test etme gibi nadir durumlarda, bir nesnenin ömrünü el ile işlemeyi gerekli bulabilirsiniz. Yalnızca çağıran Marshal.AddRef programlar çağrısı Releaseyapmalıdır. Başvuru sayısı sıfıra ulaştıktan sonra çağrılması Release tanımsız davranışa neden olur.
Yayına yönelik IUnknown arabirim işaretçisini temsil eden bir IntPtr değer elde etmek için , Marshal.GetIUnknownForObjectveya Marshal.GetIDispatchForObject çağırabilirsinizMarshal.GetComInterfaceForObject. Yönetilen nesnenin ReleaseCOM Çağrılabilen Sarmalayıcı tarafından temsil edilen COM arabirimlerini serbest bırakmak için bu yöntemleri ve yöntemini yönetilen nesneler üzerinde de kullanabilirsiniz.