- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
将 COM 互操作与 Office(通常是 Excel)一起使用时,我总是小心确保我调用 Marshal.ReleaseComObject
在每个引用上,以避免 Excel 不退出的问题 as described in this KB article .
当我从 OOB Silverlight 应用程序(使用 AutomationFactory.CreateObject
)使用 Interop 时,如何确保 Excel 退出?
Silverlight 没有 Marshal.ReleaseComObject
方法甚至调用 GC.Collect
和 GC.WaitForPendingFinalizers
没有帮助。
如果没有释放 COM 引用的机制,微软肯定没有将此功能添加到 Silverlight 吗?在我看来,这似乎是自动化进程外 COM 服务器(如 Excel)的最佳选择。
一个令人惊讶的遗漏,更何况 Pete Brown 在他的书“Silverlight 4 in Action”的第 5.5 节中谈到 AutomationFactory.CreateObject
, 那:
The primary intent of this feature is to allow automation of other applications, including Microsoft Office.
Marshal.ReleaseComObject
不同,它更能容忍未能处理每个引用。上面引用的知识库文章中描述的解决方案。
最佳答案
您可以实现 IDisposable
界面。我见过的最好的例子是 http://csfun.blog49.fc2.com/blog-entry-79.html .博客条目是日文的,但如果您不会阅读日文,请在 Chrome 中打开并让 Google 为您进行页面翻译。
此外,如果您只想直接获取 COM 包装器的源代码示例,您可以下载它附带的示例应用程序:SilverOffice .
关于silverlight - 如何在 Silverlight 4 中释放 COM 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5605024/
我是一名优秀的程序员,十分优秀!