Должен ли класс-оболочка вызывать COM-компонент через C# для реализации шаблона Dispose?
У меня есть класс, написанный на C#, который действует как оболочка вокруг компонента COM. Компонент COM имеет раннюю привязку, а RCW был сгенерирован Visual Studio. Должен ли я реализовать шаблон dispose в моем классе-обертке для очистки ссылки COM или я должен просто позволить GC обработать его, так как он уже имеет RCW?
1 ответ
Решение
Реализация Dispose редко требуется, но часто есть веские причины для этого.
Если COM-объект представляет собой значительный ресурс, который необходимо быстро освободить, то это может быть хорошей причиной для реализации Dispose.
В вашем методе утилизации вы можете сделать:-
System.Runtime.InteropServices.Marshal.ReleaseComObject(myRCW);
Следовательно, удаление вашего класса немедленно освободит объект COM.