【问题标题】:COM interop questionCOM互操作问题
【发布时间】:2011-04-13 03:51:27
【问题描述】:

我在我的 C# 应用程序中使用 COM 互操作。

我有这行代码:

IMyInterface objData = MyCOMClass.GetData();

我的问题是:

是否需要通过使用释放 objData 上的资源? System.Runtime.InteropServices.Marshal.ReleaseComObject(objData);

感谢阅读。

【问题讨论】:

标签: c# com interop


【解决方案1】:

是的,除非您可以等到 GC 清理它。

值得注意的是,COM 互操作会为每个接口创建一个 COM 引用。

IMyInterface x = MyCOMClass.GetData();
IMyOtherInterface y = (IMyOtherInterface)x;
IMyInterface z = x;

Marshal.ReleaseComObject(x);
Marshal.ReleaseComObject(y);

或 Marshal.FinalReleaseComObject(x); // 如果你知道没有其他人使用它

【讨论】:

  • 感谢 adrianm 的回复。这很有帮助。
猜你喜欢
  • 2011-01-27
  • 2011-05-29
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 2010-12-14
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
相关资源
最近更新 更多