DataTable disposed 之后,为什么 DataView 还有数据?
DataView view = table.DefaultView;
table.disposed();
为什么 view 还有数据?
------解决方案-------------------- 基本的常识问题。
Dispose()的作用是释放非托管的资源。同时向这个对象宣告,我不再使用你了。
它没有清除数据、自动销毁之类的作用。
在调用Dispose()之前,务必确保这个对象已经不再被使用。
------解决方案-------------------- 探讨 DataView view = table.DefaultView; table.disposed(); 为什么 view 还有数据?
------解决方案-------------------- 你的理解好像有些问题。一楼说的很明白Dispose()的作用是释放非托管的资源
而你所说的Dispose(boolean)是MarshalByValueComponent的一个function,的确可以选择性释放。
问题是你没有call Dispose(boolean),你call的 table.Dispose(); 而且table本身是不能call .Dispose(boolean)的, 它只能被重写。
table是托管资源,call了dispose并没有任何实质性的作用。一般情况下,托管资源在栈(gen0)满了以后自动释放。
------解决方案-------------------- 你用的是dataset绑定到dataview中的吧,dispose只是释放数据库连接,会清空sqldatareader中的数据。dataset存储在客服端机器的内存中所以不能被释放的。
------解决方案-------------------- 你帖出来片断代码 没有用啊
C# code
// Implement IDisposable.
// Do not make this method virtual.
// A derived class should not be able to override this method.
public void Dispose()
{
Dispose(true);
------解决方案-------------------- 你都移除了数据操作,怎么还会有数据……
------解决方案-------------------- 探讨 ......在与 GridView 数据源绑定,看看数据是不是还在
------解决方案-------------------- 我只是指出你的疑问很可能是由于没有弄清楚对象生命周期, 你看看上面的讨论根本就没有意义, (其实,对于dispose干什么,根本不用咬文嚼字,微软MSDN说的在明了不过了)所以建议你贴出一个简单的demo来说明你的疑问, 看看我估计的是不是正确的, 然后你再来给我扣帽子