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