+ -
当前位置:首页 → 问答吧 → 生存周期的问题

生存周期的问题

时间:2011-12-20

来源:互联网

C# code


        public void read(OleDbDataReader dr)
        {
            using (dr)
            {


            }
        }




这样写 能自动回收OleDbDataReader 吗?
如果想自动回收 要怎么写?

作者: ayun00   发布时间: 2011-12-20

不会自动回收OleDbDataReader,using只是调用了dr.Dispose而已,其他事情都没干,如果Dispose方法,using什么都不会干,

作者: stonespace   发布时间: 2011-12-20

OleDbDataReader dr本身还有其他引用引用这个对象,所以using不会把对象送入GC处理,而是保留对象,

但离开using后,会自动调用dr.Dispose,这个方法会自动关闭OleDbDataReader,应该释放了dr内部分配的所有资源(如果它按照规范实现的话),也可以了,

也就是说离开using之后,dr对象本身还在,但dr内部分配的所有资源包括非托管资源应该都已经被释放,

dr对象本身不会占用多少对象,所以dr对象留着也不会消耗多少资源,

作者: stonespace   发布时间: 2011-12-20

相关阅读 更多