我有一个嵌入表单的第三方ActiveX控件。控件的类实现了IDisposable。我的问题是我应该在窗体关闭事件中手动调用控件的dispose方法,还是进入设计器并编辑窗体dispose方法来调用控件的dispose。
我理解一个表单调用它拥有的所有控件的dispose方法,但是有任何异常,因为这是一个COM控件。感谢。
PS:我使用的是Visual Studio 2008,.Net 3.5,项目类型:Windows窗体应用程序
答案 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
方法。