为什么COM对象不使用IDisposable?

为什么COM对象在CLR Callable Wrappers中不使用IDisposable?


据推测,这样的IDisposable实现将调用Marshal.ReleaseComObject。

在某些情况下,调用Marshal.ReleaseComObject是一个好主意,例如,让.NET应用程序在.NET客户端自动执行后退出。

但是,正如Marshal.ReleaseComObject的文档所述,它不应​​该在一般情况下使用 - 并且可能根本不用于进程内COM对象。 这里有一个博客文章,提供一些更详细的信息。

因此,鼓励人们通过从RCW中的IDisposable实现中调用它来使用它并不是一个好主意。

但有趣的是,Silverlight 4 AutomationFactory.CreateObject方法确实返回了一个IDisposable动态对象。 测试似乎表明,这实际上释放COM参考,尽管文档有点稀疏。

链接地址: http://www.djcxy.com/p/54853.html

上一篇: Why don't COM object use IDisposable?

下一篇: How to overwrite an Entity in Symfony2 bundle