当前位置:编程学习 > C#/ASP.NET >>

c#中析构函数的问题.

    ~Proc()
        {
            System.Web.HttpContext.Current.Response.Write("哈哈");
            conn.Close();
        }
好像没有输出啊?? --------------------编程问答-------------------- ....


.... --------------------编程问答-------------------- new Proc();
这样看看会不会输出
--------------------编程问答-------------------- 搞了 没的反应.......... --------------------编程问答-------------------- 人都跑哪里去乐??? --------------------编程问答-------------------- 析构函数只有在垃圾回收时才被调用 --------------------编程问答-------------------- 析构函数只有在垃圾回收时才被调用,但是你的对象并不一定马上会被回收。 --------------------编程问答-------------------- 什么时候才是垃圾回收? --------------------编程问答-------------------- 那怎么办呢?我想把关闭数据库放在析构函数里面可以吗? --------------------编程问答-------------------- 没搞过............. --------------------编程问答-------------------- 最好用完了就关了链接或则相关资源吧。

要不等系统自动释放,时间占用就太长了。

其实你可以什么相关SQL语句执行完了以后,就可以手动关闭连接,别等系统自动回收。

顺别提醒一下,reader读数据的时候数据库连接不能关的。 --------------------编程问答-------------------- 析构函数只适合用于释放非托管资源。因为托管资源由.net管理,所以即使你在析构函数里试图释放托管资源,但你也无法预知.net将在什么时候回收资源。当然,你可以显示的调用GC.Collect方法来强制执行垃圾回收,但这是不推荐的。对于数据库这样的稀缺资源应该及时释放,使用完毕后即close,或者使用using语句来确保释放。 --------------------编程问答--------------------
引用 6 楼 hanjun1024 的回复:
析构函数只有在垃圾回收时才被调用,但是你的对象并不一定马上会被回收。

同意;
 说一下: 可以用你的Proc类实现Idispose接口,实现dispose()方法,在disponse()方法中回收资源(比如Conntion资源)
  --------------------编程问答--------------------
引用 12 楼 zhiguo2008 的回复:
引用 6 楼 hanjun1024 的回复:
析构函数只有在垃圾回收时才被调用,但是你的对象并不一定马上会被回收。 
 
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,