==========================██ 如何在asp.net中释放资源?asp.net + xml,实现无数据库的信息系统 ██==========================
请教大家:
我遇到一个问题: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文件,但如何释放?
希望得到大家的指导。谢谢!