我正在开发一个应用程序,它严重依赖于多个 Microsoft Office 产品,包括 Access、Excel、Word、PowerPoint 和 Outlook 等。在研究互操作性时,我发现从 VS2010 和 .NET 4 开始,我们可以庆幸地不再遭受PIAs的噩梦。
此外,我已经阅读了许多关于对象正确处理的文章,其中最明智的看起来是this。
然而,该文章已经有五年之久了,在这个主题上没有太多权威出版物。以下是来自上述链接的代码示例:
' Cleanup:
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
Marshal.FinalReleaseComObject(worksheet)
oWB.Close(SaveChanges:=False)
Marshal.FinalReleaseComObject(workbook)
oApp.Quit()
Marshal.FinalReleaseComObject(application)
我想知道的是,按照今天的标准,这个问题有多准确,如果我希望支持我的应用程序在未来几年内,我应该注意什么?
更新:非常感谢提供一些可信的文章链接。顺便说一下,这不是一个服务器端应用程序。它将在计算机实验室中运行,我们让用户与我们为他们实例化的办公产品进行交互。
找到了:这篇三部分的文章可能是我能找到的最权威的解释。