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

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

13.10.2009 09:54:40
1 ОТВЕТ
РЕШЕНИЕ

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

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

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

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

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

4
13.10.2009 10:11:27
Это заставляет меня задуматься, почему RCW не реализует шаблон Dispose, это кажется правильным решением.
vmb100 30.05.2016 10:15:10