c#中析构函数的问题.
~Proc(){
System.Web.HttpContext.Current.Response.Write("哈哈");
conn.Close();
}
好像没有输出啊?? --------------------编程问答-------------------- ....
.... --------------------编程问答-------------------- new Proc();
这样看看会不会输出
--------------------编程问答-------------------- 搞了 没的反应.......... --------------------编程问答-------------------- 人都跑哪里去乐??? --------------------编程问答-------------------- 析构函数只有在垃圾回收时才被调用 --------------------编程问答-------------------- 析构函数只有在垃圾回收时才被调用,但是你的对象并不一定马上会被回收。 --------------------编程问答-------------------- 什么时候才是垃圾回收? --------------------编程问答-------------------- 那怎么办呢?我想把关闭数据库放在析构函数里面可以吗? --------------------编程问答-------------------- 没搞过............. --------------------编程问答-------------------- 最好用完了就关了链接或则相关资源吧。
要不等系统自动释放,时间占用就太长了。
其实你可以什么相关SQL语句执行完了以后,就可以手动关闭连接,别等系统自动回收。
顺别提醒一下,reader读数据的时候数据库连接不能关的。 --------------------编程问答-------------------- 析构函数只适合用于释放非托管资源。因为托管资源由.net管理,所以即使你在析构函数里试图释放托管资源,但你也无法预知.net将在什么时候回收资源。当然,你可以显示的调用GC.Collect方法来强制执行垃圾回收,但这是不推荐的。对于数据库这样的稀缺资源应该及时释放,使用完毕后即close,或者使用using语句来确保释放。 --------------------编程问答--------------------
同意;
说一下: 可以用你的Proc类实现Idispose接口,实现dispose()方法,在disponse()方法中回收资源(比如Conntion资源)
--------------------编程问答--------------------
补充:.NET技术 , ASP.NET