==========================██ 如何在asp.net中释放资源?asp.net + xml,实现无数据库的信息系统 ██==========================

nichen 2005-06-26 06:06:37
请教大家:
我遇到一个问题:asp.net + xml,实现无数据库的信息系统。在修改资料的页面中,我使用下面的方法fillData(),分别从两个xml文件中提取信息,填充到表单,比如下拉列表、文本框之类。fillData返回一个数据表DataTable.代码如下:

//开始: 填充 修改页面 的数据===================================
private DataTable fillData(string id)
{
//获取xml文件的数据
XmlTextReader xmlr = new XmlTextReader(ConfigurationSettings.AppSettings["datapath"] + gbid + ".xml");
DataSet ds = new DataSet();
ds.ReadXml(xmlr);
DataTable dTable = ds.Tables[0];
return dTable;
//return ConfigurationSettings.AppSettings["datapath"] + id;
ds = null;
ds.Dispose();
dTable = null;
dTable.Dispose();
xmlr.Close();
xmlr = null;
}
// 结束: 填充 修改页面 的数据================================



在page_load中,调用fillData( ) 。实现进入页面时,填充数据表单。有两项数据表需要填充,分别访问两个xml文件。
一个数据表是 下拉列表,用绑定数据。
一个数据表是标题、内容之类的信息,直接获取数据。


if (!IsPostBack)
{
string url = Page.Request["cha"] + Page.Request["id"];
DataTable dturl = fillData(url);
DataTable dtcha = fillData("ztcha");
// 把表与下拉菜单绑定数据
lstChannel.DataSource =dtcha.DefaultView;
lstChannel.DataValueField = "ChannelName";
lstChannel.DataTextField = "ChannelName";
lstChannel.DataBind();
dtcha.DefaultView.Dispose();
//填充数据
this.txtId.Text = dturl.Rows[0][0].ToString();
this.txtTitle.Text = dturl.Rows[0][1].ToString();
this.txtSubTitle.Text = dturl.Rows[0][2].ToString();
this.txtContent.Text = dturl.Rows[0][3].ToString();
dturl = null;
dtcha = null;
dturl.Dispose();
dtcha.Dispose();
}

但是,每刷新一次编辑页面,就装载两次共4个xml文件,并且xml文件得不到释放。导致修改操作失败。错误:
进程无法访问文件“D:\web\Ztxt\Data\37.xml”,因为该文件正由另一进程使用。

我想,可能是需要释放xml文件,但如何释放?

希望得到大家的指导。谢谢!
...全文
230 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fphuang 2005-06-26
  • 打赏
  • 举报
回复
向各位老大学习
hchxxzx 2005-06-26
  • 打赏
  • 举报
回复
你可应用如下方式,保证能执行到函数的结尾
try
{
//执行过程,包括return返回参数
}
catch
{
//出错时的处理
}
finally
{
//不论出现哪种情况,函数都会引用这一段过程
//你可把你的释放资源语句放在此处执行,保证在正常运行和出错时均可释放资源
}
sh5281 2005-06-26
  • 打赏
  • 举报
回复

学习
bitsbird 2005-06-26
  • 打赏
  • 举报
回复
都return 了,当然释放不了了
hackate 2005-06-26
  • 打赏
  • 举报
回复
ds = null;

要换成ds.clear啊。。。

以后任何对象都不要用xxx = null;释放。这样是错误地。要用
xxx.close / xxx.dispose /xxx.clear

一般你看一下他的方法都知道那些是要释放对象,关闭的。这样你就明白了。自己做看看。可以的

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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