C#程序释放资源的问题?谢谢!

一个检测用户名是否存在的函数,代码大致如下:protectedboolNameTest(stringname){SqlConnectionconn=……;//连接SqlC... 一个检测用户名是否存在的函数,代码大致如下:
protected bool NameTest(string name)
{
SqlConnection conn = ……;//连接
SqlCommand cmd = ……;//command命令实例
conn.Open();
int count = Convert.ToInt32(cmd.ExecuteScalar());//返回记录数
if (count > 0)
{
return true;
}
else
{
return false;
}
conn.Close();
//获取记录数后释放资源
cmd.Dispose();
conn.Dispose();
}

提交注册,代码大致如下:
protected void Button1_Click(object sender, EventArgs e)
{
//代码略,在此代码块中,因为有需要,示情况会调用NameTest()函数2至3次
}

我对程序运行原理懂得很少,请问在NameTest()函数代码块中,要不要给cmd和conn两个对象释放资源,我想如果该函数只
被调用一次的话,理所当然要释放,但实际应用中,仅仅提交注册这个动作瞬间就要调用2-3次,这种情况,是不是不释放更好,
因为释放资源又重新分配,如此反复几次反而更浪费时间和资源,对吗?
但这只是我在想像中的猜测,还望高手们给个明确的解释,谢谢!祝新年快乐!
展开
 我来答
yupinghuashi
2009-01-29
知道答主
回答量:43
采纳率:0%
帮助的人:21.3万
展开全部
GC,一个服务CLR的。有两个特点,前人的总结。但不是scott他们说的。我是这么翻译的:
1.当程序不再运行的时候,GC可以从内存中删除对象。
2.GC在原则上释放那些不得不释放的程序任务,比如释放你所要求的释放(dispose)的和造成内存溢出的程序。
实际上我认为在服务器上打上framwork2.0的补丁为前提下,你必修写上dispose.而且要是你参照一些个翻译错误的书来写,你吃的亏会很大。为什么?问题在于你所开发的系统上了2000流量,若是电子商务网站,弄不好将因为你的造成的事故而死去。一天损失上万。所以,服务器内存释放你必须考虑下。否则后果自负。自己写个类吧!
公司老大格言,.net 是个框,你要在已经打上桩的框中编写你自己的未来(实际vs并不美好)
"写" 请自己参考CLR
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
末日高督
2009-01-28 · TA获得超过303个赞
知道小有建树答主
回答量:469
采纳率:0%
帮助的人:265万
展开全部
不用,因为在c#中,在我们操作问以后,程序会自动释放资源.当然,我们如果手动释放这是个好习惯.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友eefa003a9
2009-01-28 · 超过23用户采纳过TA的回答
知道答主
回答量:66
采纳率:0%
帮助的人:0
展开全部
如果cmd和conn要频繁的使用 倒不如声明为类中的全局变量 这样运行程序只需要初始化一次 释放一次
比如这样
class Form1
{
....
SqlConnection conn = ……;
SqlCommand cmd = ……;

void Function1()
{
cmd.xxx;
}

}

如果只是偶尔用一下 用过之后就Dispose掉比较节省资源
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zyfzhangyafei
2009-01-28
知道答主
回答量:17
采纳率:0%
帮助的人:20万
展开全部
其实你可以把数据库访问相关函数写到一个类中,要访问时调用这个类的相关函数就可以了,不用每次都去写这些代码。C#会自动释放资源,这个不用太担心,他们的生存期到了,自然会回收,当然写上也没问题,资源不用就释放,我觉得应该这样,下次用下次再分配。但是你的OPEN和CLOSE等最好是要加上捕捉错误的代码,因为网络等原因,可能导致访问的失败。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式