我使用AxHost实现在.net Winform应用程序中托管了一个COM activex控件,现在COM activex ocx控件在Visual Basics中实现。现在Vb代码实现了很少的COM接口,接口IABC就是其中之一。
我的VB代码如下:
implements IABC
public void YYYYY()
End Sub
public void ZZZZZ()
End Sub
现在使用C#代码
public class AxHostControl:AxHost
{
public AxHostControl(string guid):base(guid)
{
}
}
在C#WinformUI应用程序
中var m_axHost = new AxHostControl(ocx_guid);
this.Controls.Add(m_axHost);
然后,我试图将Ocx作为
var ocxObject =m_axHost.GetOcx();
var abcControl = (IABC)ocxObject;
在此期间,我致电abcControl.YYYYY();
或abcControl.ZZZZZ();
现在我的问题是,当abcControl
为ComObject
时,如果我使用m_axHost
处置m_axHost.dispose();
,则将从UI卸载ocx控件但是如何处置来自C#的COM对象abcControl
否则会出现内存泄漏?