Marshal.ReleaseComObject这当然不会自动完成,并且在某些情况下(通过调用)这样做可能很危险,如本博客文章中所述。
对于进程内 COM 对象,通常根本不需要释放 COM 对象。
对于 Out-Proc COM 对象,释放它们可能很重要,以防止Office 应用程序在 .NET 客户端自动化后无法关闭等问题。
在这种情况下,我会遵循上面链接的博客文章中的建议:
如果您以范围内的单线程方式使用 COM 对象,那么在使用完该对象后,您可以安全地对该对象调用 ReleaseComObject。
但是,如果您在应用程序中的多个位置或多个线程(或同一进程中的其他应用程序)使用 COM 对象,则不应调用 ReleaseComObject