У меня есть тип 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-объекты в финализаторе?