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

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

1 Ответ

4 голосов
/ 13 октября 2009

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

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

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

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

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

...