Marshal.Release(IntPtr) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Dekrementuje liczbę odwołań dla określonego interfejsu.
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
Parametry
- pUnk
-
IntPtr
nativeint
Interfejs do wydania.
Zwraca
Nowa wartość liczby odwołań dla interfejsu określonego pUnk
przez parametr .
- Atrybuty
Przykłady
W poniższym przykładzie pokazano, jak pobrać IUnknown
interfejs dla obiektu zarządzanego GetIUnknownForObject przy użyciu metody . W tym przykładzie zostanie wyświetlony wskaźnik interfejsu, wywołując metodę 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
Uwagi
Środowisko uruchomieniowe języka wspólnego zarządza liczbą odwołań obiektu COM, co sprawia, że użycie tej metody jest niepotrzebne bezpośrednio. Użyj tej wartości tylko do celów testowych. W rzadkich przypadkach, takich jak testowanie niestandardowego marshalera, może okazać się konieczne ręczne manipulowanie okresem istnienia obiektu. Tylko programy wywołujące Marshal.AddRef powinny wywołać metodę Release. Wywołanie po Release osiągnięciu zera liczby odwołań powoduje niezdefiniowane zachowanie.
Możesz wywołać metodę Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObjectlub Marshal.GetIDispatchForObject uzyskać wartość reprezentującą IntPtr wskaźnik interfejsu IUnknown do wydania. Można również użyć tych metod i Release metody w obiektach zarządzanych, aby zwolnić interfejsy COM reprezentowane przez obiekt zarządzany COM Callable Wrapper.
Dotyczy
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla