【问题标题】:COM Interop Component Stays In MemoryCOM 互操作组件保留在内存中
【发布时间】:2011-09-23 10:02:45
【问题描述】:

我有一个用 Visual Studio 6 ATL 编写的 COM 组件。这是一个进程外的exe。在 C# .NET 中,我可以实例化并调用此组件,但在调用它的函数完成后,组件的 exe 仍会加载到任务管理器中。

这在 .NET 中正常吗?当我从用 Visual C++ 6 编写的测试应用程序中调用它时,它会自行卸载。

在 .NET 中,我所做的只是添加引用并选择列表中的 COM 组件。然后通过调用 new 来创建它的一个实例。

【问题讨论】:

  • 您要释放 COM 对象吗?显示处理 COM 对象的代码可能会有所帮助。

标签: c# .net com-interop


【解决方案1】:

您看到的问题与此问题相同: How do I properly clean up Excel interop objects?

这是对幕后发生的事情的一个很好的描述: http://blogs.msdn.com/b/cbrumme/archive/2003/04/16/51355.aspx

【讨论】:

  • 谢谢。我会试一试。我看过很多没有发布方法的 COM 互操作示例,所以我只是假设在 C# 中您不必以相同的方式在 C# 中对使用 new 创建的对象调用 delete。我的错。
  • 如果我使 COM 调用异步并使用连接点,这将如何工作?还是和C++一样吗?
  • 那篇 MSDN 文章给人的印象是没什么好担心的,实际上最好还是不要尝试调用 Release。如果是这样,我会留下它或者我误解了。
猜你喜欢
  • 2011-08-05
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 2020-06-24
  • 1970-01-01
  • 2010-12-14
  • 1970-01-01
相关资源
最近更新 更多