Я написал COM-компонент на неуправляемом C ++, чтобы предоставить клиентам доступ к нашей базе данных. При использовании его из неуправляемого языка соединения с базой данных корректно очищаются, так как объекты выходят из области видимости. Недавно я попытался использовать его из VB.NET и обнаружил, что COM-объекты не уничтожаются. Рассеяние вызовов System.Runtime.InteropServices.Marshal.ReleaseComObject решает проблему, но я хотел бы найти более простое и безопасное решение для исключений, поскольку этот COM-объект предназначен для использования пользователем.
Похоже, что правильное решение состоит в том, чтобы управляемые объекты реализовали IDisposeable , поэтому можно использовать оператор , использующий , автоматически вызывая Dispose , когда объект больше не требуется.
Как мне реализовать IDisposeable для подмножества моих объектов? Некоторые из объектов, которые требуют утилизации, не могут быть созданы совместно, но возвращаются другими функциями.