Marshal.Release(IntPtr) Метод

Определение

Уменьшает счетчик ссылок для указанного интерфейса.

[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);

Параметры

pUnk
IntPtr

Освобождаемый интерфейс.

Возвращаемое значение

Новое значение счетчика ссылок для интерфейса, заданного параметром pUnk.

Атрибуты

Примеры

В следующем примере показано, как получить IUnknown интерфейс для управляемого объекта с помощью 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();
    }
}

Комментарии

Среда CLR управляет числом ссылок com-объекта, поэтому использовать этот метод напрямую не требуется. Используйте это значение только для тестирования. В редких случаях, например при тестировании пользовательского маршалера, может потребоваться управлять временем существования объекта вручную. Вызывать должны только программы, вызывающие Marshal.AddRefRelease. Вызов Release после того, как число ссылок достигнет нуля, приводит к неопределенному поведению.

Можно вызвать Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObjectили Marshal.GetIDispatchForObject , чтобы получить IntPtr значение, представляющее указатель интерфейса IUnknown для освобождения. Вы также можете использовать эти методы и Release метод для управляемых объектов, чтобы освободить интерфейсы COM, представленные вызываемой оболочкой COM управляемого объекта.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

См. также раздел