我在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); //如果您知道没人使用它