我有一个嵌入到表单中的第三方 ActiveX 控件。控件的类实现 IDisposable。我的问题是我应该在表单关闭事件中手动调用控件的 dispose 方法,还是进入设计器并编辑表单 dispose 方法以调用控件的 dispose。
我知道一个表单调用它拥有的所有控件的 dispose 方法,但是有任何例外,因为这是一个 COM 控件。谢谢。
PS:我正在使用 Visual Studio 2008,.Net 3.5,项目类型:Windows 窗体应用程序
MSDN Marshal.ReleaseComObject 为了释放或释放 COM 对象,您需要使用此代码
System.Runtime.InteropServices.Marshal.ReleaseComObject( someComObject);
//这是您的 COM 对象 Dispose 将不适用于 COM 对象,例如如果您有一个名为 fs 的对象,请尝试使用类似这样的代码来处理您的对象
((IDisposable)fs).Dispose();
不,你不需要做什么特别的事情。
因为Control
类(其他容器控件,如Form
继承自)实现了IDisposable
接口,它应该(如果它遵循标准IDisposable
实现指南)处理它持有的任何实现IDisposable
接口的引用。
也就是说,您的控件(假设它位于由Controls
property公开的控件集合中)将在包含它的窗口关闭时调用它的IDisposable.Dispose
方法(因为关闭窗口会导致Dispose
调用窗口的方法)。