У меня есть тип COM (созданный с использованием tlbimp.exe ) и класс C #, который обертывает этот объект.Я хочу выполнить некоторую очистку в финализаторе для моей оболочки C #.Следуя рекомендациям здесь Я мог бы написать что-то вроде этого:
public class MyClass : IDisposable
{
private IMyComObject comObject;
public MyClass()
{
comObject = new MyComObject();
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
~MyClass()
{
Dispose(false);
}
protected virtual void Dispose(bool disposing)
{
// Be tollerant of partially constructed instances
if (comObject != null)
{
comObject.Cleanup();
// Account for object being disposed twice
comObject = null;
}
}
// Other bits go here...
}
Я знаю, что финализаторы могут работать в любом порядке, и поэтому я не должен пытаться использовать какой-либо объект, который реализует финализатор,однако, насколько я могу судить, сгенерированные tlbimp COM-типы не реализуют финализатор, и поэтому все вышеперечисленное должно быть в порядке.
Однако я не смог найти никакой официальной документации по этому вопросу, поэтому мой вопрос Безопасно ли ссылаться и использовать COM-объекты в финализаторе?