2010-09-16 166 views
3

在我的C#應用​​程序中使用COM互操作。COM互操作問題

我有這行代碼:

IMyInterface objData = MyCOMClass.GetData(); 

我的問題在這裏:

我需要用將發佈objData資源? System.Runtime.InteropServices.Marshal.ReleaseComObject(objData);

感謝您的閱讀。

+0

可能的重複[在.NET應用程序中清理COM對象的最佳方法](http://stackoverflow.com/questions/3650878/best-way-to-clean -up-a-com-object-in-a-net-application) – Richard 2010-09-16 11:02:37

+0

在這個問題中,我想知道是否需要使用ReleaseComObject清理一個類型爲「interface」的對象。因此我發佈了一個新問題。謝謝。 – Jimmy 2010-09-16 12:18:13

回答

2

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

值得注意的是,COM互操作爲每個接口創建一個COM引用。

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

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

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

+0

感謝adrianm爲您的答覆。這有助於。 – Jimmy 2010-09-16 12:18:56