在表单上处理ActiveX控件

时间:2012-07-31 19:58:42

标签: c# .net vb.net winforms

我有一个嵌入表单的第三方ActiveX控件。控件的类实现了IDisposable。我的问题是我应该在窗体关闭事件中手动调用控件的dispose方法,还是进入设计器并编辑窗体dispose方法来调用控件的dispose。

我理解一个表单调用它拥有的所有控件的dispose方法,但是有任何异常,因为这是一个COM控件。感谢。

PS:我使用的是Visual Studio 2008,.Net 3.5,项目类型:Windows窗体应用程序

2 个答案:

答案 0 :(得分:2)

MSDN Marshal.ReleaseComObject 要释放或释放COM对象,您需要使用此代码

System.Runtime.InteropServices.Marshal.ReleaseComObject( someComObject); 

//这是你的COM对象     Dispose不适用于COM对象    例如Debug并尝试使用这样的代码来处理对象    如果你有一个名为fs的对象

((IDisposable)fs).Dispose();

答案 1 :(得分:0)

不,你不需要做什么特别的事。

因为Control class(其他容器控件,例如Form继承自)来实现IDisposable interface,所以它应该(如果它遵循标准IDisposable implementation guidelines)处置实现IDisposable接口的任何引用。

那就是说,你的控件,假设它在Controls property公开的控件集合中,当包含它的窗口关闭时,它将被IDisposable.Dispose method调用(因为关闭窗口导致窗口的要调用的Dispose方法。