跟踪com对象c#的发布。

时间:2012-04-16 18:41:22

标签: c# com interop pinvoke

我有一个由umamaged代码使用的c#com类。我可以调试它,但我不知道什么时候发布了一个对象。如果已经在c ++中实现了descructur将被调用,在c#上它将被释放到GC。有没有办法追踪那一刻? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

维护非托管资源的托管类型应实现IDisposable接口。这告诉消费者你的代码需要在对象的实例上调用Dispose()(如果可能的话,将它们包装在using块中)。

IDisposable的正确实现将在其终结器中释放本机资源,但客户端可以比确定性释放非托管资源更快地调用Dispose()。无论哪种方式,您都可以避免泄漏,但最好尽快呼叫Dispose()

Here is an SO question详细说明了这一过程。