基本上是释放窗体资源的意思,不过dataset还是要等它垃圾回收滴。从程序严密的角度来考虑,一个open就应该对应一个close,习惯。
解决方案 »
- CheckedListBox的问题
- 冰天雪地跪地求教
- treeview添加子节点
- 请教C#读取CSV文件
- 大家帮我看看:用AJAX实现datagird或datalist无刷新显示的问题.
- DataTable不能跟null对比吗?ExecuteNonQuery()不能返回select 语句的影响行数吗?
- 100分求助,如何用C#實現在Excel檔案中插入一個文件(VB.NET已解決)
- 怎样使主窗体得到事件消息?目前就10分了
- 各位大哥高手 请问怎么读到物理地址值呢 ??谢谢................
- c# 关于结构体与事件的问题
- 谁能帮我解决这个问题
- web里的treeview控件问题!急!
问题2:在Dispose中,是否需要将自己在From中new的对象手工Dispose?
问题3:在DataTable中,是否能够Group By?
2、.Net框架有自动回收内存的功能,并不用每个new对象手动Dispose。
3、DataTable不支持Group by,不过你可以写在以前的查询语句中。
private string s = "1";
}当 o 这个方法结束时,s 这个内存堆会被废弃或者被重用,如果废弃状态在GC 的next timer 到时(可以使用Process Explorer 新版查到 timer),也是一样会被free 掉,在server 级别(win2003)中包括服务、DLL 都会被定时回收的所以你的oraDataSet 是否必须要 Dispose,这就取决于它的作用域或父容器(比如当前类、继承的方法、受引用体等)是否已经失效或者已经被销毁另外一种情况在于,如果该变量作用域是“类局部”就应该在 不再使用时 进行Dispose,这是一个好的习惯,至于是否需要循环事实上,是不必的,而且上面你的例子连Dispose 都不需要,你的 protected override void Dispose 是 Dispose 方法的重写,如果执行到了这里就说明该类将被销毁,那么事实上对oraDataSet(如果此变量作用域是当前类并且不是静态的) 进行 Dispose 是非必须的。不过,对于Dispose 我个人意见还是做在析构里比较安全些,比如public class a{
private DataSet oraDataSet = new DataSet();
private void 方法1或其它代码(){
} ~a { //这就是析构,它在当前类反构造(销毁实例)时执行
oraDataSet.Dispose();
}}
.NET里面很少需要使用析构函数的...
qiujoe(迷糊)和 ArLi2003(阿利 大家帮我找工作呀) 在观点二上有些冲突。qiujoe(迷糊)说的临界资源是什么意思
1、不用循环效果一样。
2、.Net框架有自动回收内存的功能,并不用每个new对象手动Dispose。
(也可以手动释放!这样执行效率会更高一些)
3、DataTable不支持Group by,不过你可以写在以前的查询语句中。
(也可以手动释放!这样执行效率会更高一些)-->>效率不一定会更高的!!垃圾回收器会根据应用程序的资源情况判断什么时候该回收资源!!因为资源回收操作将耗费系统资源,如果手工回收资源的话有可能影响应用程序的性能!
===弯弯的月亮小小的船,小小的船,两头尖,我在小小的船里坐,只看见闪闪
的星星蓝蓝的天.
===本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利
===我的blog:http://loulanlouzhu.blogone.net
2、.Net框架有自动回收内存的功能,从内存管理的角度,并不用每个new对象手动Dispose;但是,从习惯上说,应该在动态对象的作用期结束后及时释放对象,一面可以及时回收内存,一面,也可以防止重复生成相同的id等其他冲突。
3、DataTable不支持Group by,不过你可以写在以前的查询语句中。
如果类CA,CB 都会写打开文件File1 ,那么CA,CB必须要实现IDisposeable,并在dispose里关闭文件,dispose()需要手工调用。
如果在析构函数中dispose(),不手工调用。文件关闭的时间将会是未知的。
我想所有的非托管资源都需要手工释放资源。这样可以充分利用资源