Освобождение объектов .NET из кода VB6 - PullRequest
3 голосов
/ 19 июня 2010

Вкл. .NET Rocks! Покажите 561 , Карл и Ричард говорили о выпуске неуправляемых объектов, созданных в управляемом коде. Если вам нужно освободить COM-объект, который создается в управляемом коде .NET, вам нужно вызвать System.Runtime.InteropServices.Marshall.ReleaseComObject. Есть ли что-то похожее, что вы должны делать (или должны делать) при освобождении объектов .NET из кода COM, или достаточно полагаться на сборщик мусора для освобождения объектов?

Ответы [ 2 ]

4 голосов
/ 19 июня 2010

Пока вы управляете счетчиком ссылок COM Callable Wrapper , как вы делаете любой другой объект COM (set netObj = Nothing), COM и .NET позаботятся обо всем остальном.

3 голосов
/ 21 июня 2010

Я бы также добавил, что если вы используете события из VB6, вы захотите добавить функцию в свой код DotNet, чтобы выпустить событие. E.g.:

class SomeEventClass
{
    public event EventHandler SomeEvent;

    public void DoSomething()
    {
        var someEvent = SomeEvent;
        if (someEvent != null)
        {
             someEvent(this, new EventHandlerArgs());
        }
    }

    public void ReleaseFromEvents()
    {
         SomeEvent = null;
    }

}

Это необходимо, поскольку иногда событие не будет очищено до нуля при уничтожении объекта VB6. Что-то выучил трудный путь ...

...