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

我有这行代码:

IMyInterface objData = MyCOMClass.GetData();


我的问题是:

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

谢谢阅读。

最佳答案

是的,除非您可以等到GC清理完为止。

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

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

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


要么
    元帅.FinalReleaseComObject(x); //如果您知道没人使用它

08-28 12:40