释放组件资源
更新:2007 年 11 月
自定义客户端组件(如行为、控件或基组件)可能必须在释放组件之前释放资源。如果确实如此,您可以重写 Sys.Component.dispose 方法,并在重写的方法中释放资源。这样可确保恰好在释放组件之前释放资源。组件将从 Sys.Component、Sys.UI.Behavior 或 Sys.UI.Control 基类继承 dispose 方法,具体取决于组件的基类型。
在组件的 dispose 方法中,请遵循以下步骤:
释放或重置组件使用的任何资源。
停止组件可能进行内部排队的任何进程,并禁用组件使用者可能调用的任何功能。
调用基类的 dispose 方法。
说明: 一种有用的做法是提供一个公共属性,该公共属性指示组件的启用状态,并在其 Set 访问器中引发一个 property-changed 事件。然后在 dispose 方法中,设置该属性以指示组件已被禁用。这将使页开发人员能够检测组件的可用性。
下面的示例演示如何重写组件类的原型中定义的 dispose 方法。
dispose: function() {
// Call set_enabled so the property-changed event is raised
// in order to notify any attached listeners.
this.set_enabled(false);
// Stop any component processes so that
// they are not called after disposal.
this._stopSimpleComponentProcesses();
// Call the base dispose method.
Samples.SimpleComponent.callBaseMethod(this, 'dispose');
}
此示例中的组件提供了 enabled 属性,在 dispose 方法中将该属性设置为 false。enabled 属性的 Set 访问器方法将引发页开发人员可绑定到的 property-changed 事件,从而使开发人员能够测试组件的可用性。此组件还具有一个私有 _stopSimpleComponentProcess 方法,该方法负责停止仍可引发 tick 事件的任何已排队进程。该方法还禁用可能会由组件使用者调用的功能。最后一项任务是,通过调用继承的 Type.callBaseMethod 方法调用基 dispose 方法。
说明: |
---|
所有已注册的类都继承 callBaseMethod 方法。有关更多信息,请参见 Type.callBaseMethod 方法。 |