在.net里怎样手动销毁一个类的实例(包括自己做的类或者是.net提供的类)?

czsd 2003-07-23 09:58:51
在.net里怎样手动销毁一个类的实例(包括自己做的类或者是.net提供的类)?
我做过一个操作数据库的dll,做了个 getDataReader的方法 ,传进sql语句,返回
sqlDataReader 的实例的,然后在后面业务层 只要 调用getDataReader方法 就可以返回一个SqlDataReader的实例,但是 发现程序消耗资源过大 ,经常死,所以不用垃圾回收 让.net自己处理其中的类,自己手动 把它销毁掉 ,请教各位高手,有什么好办法吗 ?
...全文
164 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
banping 2003-07-24
  • 打赏
  • 举报
回复
不是的,他是用在Pocket Pc上的!
内存小的很,速度不快,所以写的代码一定要精简,有效率。
liduke 2003-07-23
  • 打赏
  • 举报
回复
只要类实现IDispose接口的,都可以用.dispose()销毁 
部分要用close()
liduke 2003-07-23
  • 打赏
  • 举报
回复
只要类实现IDispose接口的,都可以用.dispose()销毁 
部分要用close()
godliu521 2003-07-23
  • 打赏
  • 举报
回复
1、有些实例使用Dispose()有些使用Close()销毁;
2、有些类的实例(instance)可以直接instance = null;
3、可以使用try{}
catch{}
finally{}
其中finally中是用于将不需要的占用资源的垃圾清理回收。
ddy2000 2003-07-23
  • 打赏
  • 举报
回复
大部分类可以用Dispose()来销毁,但有些类就只能由系统回收.

sqlDataReader使用时,关联的SqlConnection在处于忙状态,不能执行其他任何操作。
SqlDataReader在使用后必须调用Close 方法,否则会一直处于此状态。

SqlDataReader的关键不是销毁对象,而是调用 Close()。

雪狼1234567 2003-07-23
  • 打赏
  • 举报
回复
Dispose()
lgabc 2003-07-23
  • 打赏
  • 举报
回复
up
zl_jingmao 2003-07-23
  • 打赏
  • 举报
回复
返回sqlDataReader 的实例,程序消耗资源过大?经常死?不会吧,先检查你的程序,否则就是你的设计有问题,实在不行就是机器问题了. :)
实例对象的资源销毁可以参见dispose接口。
using System;

class MyClass: IDisposable
{
public string m_sName;
private bool disposed = false;

public void Dispose()
{
Dispose(true);
// Take yourself off of the Finalization queue
// to prevent finalization code for this object
// from executing a second time.
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
// Check to see if Dispose has already been called.
if(!this.disposed)
{
// If disposing equals true, dispose all managed
// and unmanaged resources.
if(disposing)
{
// Dispose managed resources.
this.m_sName = null;
}
// Release unmanaged resources. If disposing is false,
// only the following code is executed.
// CloseHandle(handle);
// handle = IntPtr.Zero;
// Note that this is not thread safe.
// Another thread could start disposing the object
// after the managed resources are disposed,
// but before the disposed flag is set to true.
}
disposed = true;
}

~MyClass()
{
Dispose(false);
}
}

class test
{
public static void Main(String[] args)
{
MyClass myObj = new MyClass();
myObj.m_sName = "sdf";
myObj.Dispose();

}
}
banping 2003-07-23
  • 打赏
  • 举报
回复
up
kuangren 2003-07-23
  • 打赏
  • 举报
回复
要是用垃圾回收处理不行,你用dispose()啊
你可以看看MSDN里面的帮助啊

Kain 2003-07-23
  • 打赏
  • 举报
回复
.dispose不行吗?
czsd 2003-07-23
  • 打赏
  • 举报
回复
自己先 up一下 希望各位高手近来 解答小弟的问题 分不够再加
superryu 2003-07-23
  • 打赏
  • 举报
回复
用Dispose()方法应该可以吧
brightheroes 2003-07-23
  • 打赏
  • 举报
回复
为什么会经常死掉呢?难道1.8个G的CPU,512的内存还不够?估计是你的程序的问题,或者是数据量达到了CPU宁可死掉也不处理的地步。要是数据量太大,还真是麻烦。
cscer 2003-07-23
  • 打赏
  • 举报
回复
GC.Collect();

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧