0

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

我知道一个表单调用它拥有的所有控件的 dispose 方法,但是有任何例外,因为这是一个 COM 控件。谢谢。

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

4

2 回答 2

2

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

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

//这是您的 COM 对象 Dispose 将不适用于 COM 对象,例如如果您有一个名为 fs 的对象,请尝试使用类似这样的代码来处理您的对象

((IDisposable)fs).Dispose();
于 2012-07-31T23:19:04.493 回答
0

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

因为Control(其他容器控件,如Form继承自)实现了IDisposable接口,它应该(如果它遵循标准IDisposable实现指南)处理它持有的任何实现IDisposable接口的引用。

也就是说,您的控件(假设它位于由Controlsproperty公开的控件集合中)将在包含它的窗口关闭时调用它的IDisposable.Dispose方法(因为关闭窗口会导致Dispose调用窗口的方法)。

于 2012-07-31T20:20:48.950 回答