Должен ли класс-оболочка вызывать COM-компонент через C# для реализации шаблона Dispose?

У меня есть класс, написанный на C#, который действует как оболочка вокруг компонента COM. Компонент COM имеет раннюю привязку, а RCW был сгенерирован Visual Studio. Должен ли я реализовать шаблон dispose в моем классе-обертке для очистки ссылки COM или я должен просто позволить GC обработать его, так как он уже имеет RCW?

1 ответ

Решение

Реализация Dispose редко требуется, но часто есть веские причины для этого.

Если COM-объект представляет собой значительный ресурс, который необходимо быстро освободить, то это может быть хорошей причиной для реализации Dispose.

В вашем методе утилизации вы можете сделать:-

 System.Runtime.InteropServices.Marshal.ReleaseComObject(myRCW);

Следовательно, удаление вашего класса немедленно освободит объект COM.

Другие вопросы по тегам