信息
您所需的主题如下所示。但此主题未包含在此库中。

IDisposable.Dispose 方法

2013/12/13

执行与释放或重置非托管资源相关的应用程序定义的任务。

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

声明
Sub Dispose

使用此方法关闭或释放由实现此接口的类的实例保持的文件、流和句柄等非托管资源。根据约定,此方法用于与释放对象所持有的资源或准备对象以便重新使用关联的所有任务。

实现此方法时,可通过在包容层次结构中传播调用来确保释放所有保持的资源。例如,如果对象 A 分配对象 B,而对象 B 又分配对象 C,那么 A 的 Dispose 实现必须对 B 调用 Dispose,而 B 反过来必须对 C 调用 Dispose。如果一个对象的基类实现 IDisposable,该对象还必须调用其基类的 Dispose 方法。

如果某对象的 Dispose 方法被调用一次以上,则该对象必须忽略第一次调用后的所有调用。如果对象的 Dispose 方法被多次调用,该对象一定不要引发异常。除 Dispose 之外的实例方法在资源已释放时会引发 ObjectDisposedException

用户可能期望资源类型使用特定的约定来表示已分配状态和已释放状态。流类即是这样一种示例,传统上认为它们要么打开要么关闭。具有此种约定的类的实施者可能选择实现具有自定义名称(如“Close”)的公用方法来调用 Dispose 方法。

因为 Dispose 方法必须显式进行调用,所以,实现 IDisposable 的对象还必须实现一个终结器,以便在未调用 Dispose 时处理释放资源问题。默认情况下,垃圾回收器会在回收一个对象的内存之前自动调用该对象的终结器。然而,在调用 Dispose 方法后,通常不需要垃圾回收器调用已释放对象的终结器。为防止自动终止,Dispose 实现可以调用 GC.SuppressFinalize 方法。

Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示: