我在Visual Studio项目中添加了对某个COM库的引用。现在,当我在方法中创建对象时,这个COM对象是否会自动在程序离开该方法时释放?或者我应该始终手动释放这些对象?(使用ReleaseComObject或FinalReleaseComObject?)
这绝对不是自动完成的,有些情况下这样做可能是危险的(通过调用Marshal.ReleaseComObject
),如此博客文章所述。
对于In-Proc COM对象,通常根本不需要释放COM对象。
对于Out-Proc COM对象,释放它们可能很重要,以防止出现问题,例如Office应用程序在.NET客户端自动化后无法关闭。
在这种情况下,我会遵循上面链接的博客文章中的建议:
如果您以作用域、单线程方式使用COM对象,则可以在使用完毕后安全地调用ReleaseComObject。
但是,如果您从应用程序的多个位置或多个线程(或同一进程中的其他应用程序)使用COM对象,则不应调用ReleaseComObject。