object.Dispose();
给object引用的对象一个(提早)释放它所占用的非托管资源的机会。通常即使不调用Dispose,对象依然会在Finalizer里释放非托管资源。
这之后对象object依然有效,可以互访问它的成员。object = null;
断开object引用和它所指向的内存对象之间的联系。当一个内存对象不在和任何引用联系的时候,GC就可以回收该对象占用的内存了。
显然,该语句之后不能再访问object的任何成员了。

解决方案 »

  1.   

    》类型的 Dispose 方法应该释放它拥有的所有资源。它还应该通过调用其父类型的 Dispose 方法释放其基类型拥有的所有资源。该父类型的 Dispose 方法应该释放它拥有的所有资源并同样也调用其父类型的 Dispose 方法,从而在整个基类型层次结构中传播该模式。要确保始终正确地清理资源,Dispose 方法应该可以被多次安全调用而不引发任何异常。Dispose 方法应该为它处置的对象调用 GC.SuppressFinalize 方法。如果对象当前在终止队列中,GC.SuppressFinalize 防止其 Finalize 方法被调用。请记住,执行 Finalize 方法会大大减损性能。如果您的 Dispose 方法已经完成了清理对象的工作,那么垃圾回收器就不必调用对象的 Finalize 方法了。》将 NULL 赋给对象变量时,该变量将不再引用任何对象实例。如果对象以前引用了一个实例,那么将其设置为 NUll 不会终止该实例本身。只有在垃圾回收器检测到没有任何活动的引用时,才会终止该实例,并释放与其关联的内存和系统资源。