每次DataSet读取数据后 需要Dispose吗?如果Dispose会影响其他用户直接读取数据有影响吗?现在使用:
DataSet ds = ProcParameter.Re_DataSet("储存过程", Proc);
            DataTable Dt = ds.Tables[0];
            for (int i = 0; i < Dt.Rows.Count; i++)
            {
                DataRow Row = Dt.Rows[i];
                html.Append("PImgPlayer.addItem(\"" + Row["AdName"].ToString() + "\");\n");
            }
            Dt.Rows.Clear();
需要在后面
加上:ds.Dispose();吗?dataset

解决方案 »

  1.   

    确实不需要,dispose是对于那些需要io开销网络开销数据库开销的对象的,dataset是离线的数据集,gc会自动回收
      

  2.   

    事实上,任何编写完备的库,都会在析构函数中包含调用Dispose的代码逻辑。所以一般来说,在非全局的、静态的对象中使用,在一般的代码中使用.NET内置的类库,不调用Dispose一般都不会有太严重的问题。
      

  3.   

    没事的,可以不用调用dispose方法。ds是一次性加载的,到内存当中,如果dispose了,就销毁了。
      

  4.   

    显示调用dispose的一个好处是,可以在你不需要某个内存对象的时候,及时的让gc在下一次对对象所在的那一代执行回收任务时就立刻回收掉这个对象,否则,依赖析构函数的话,对象并不会被回收,而是挪到下一代,这样,按平均统计数据,要10倍的回收执行次数以后才能被真正回收。