设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 网络编程 >> C#教程 >> C# IDataReader造成的资源泄漏
精品推荐
C#教程点击TOP10
·如何用C#写所见即所得的设计器
·C#编程的七个小技巧
·C#语言初级入门(1)
·c#学习笔记(1)
·C#基础学习 —— 异步编程篇
·C#语言初级入门(2)
·利用C#远程存取Access数据库
·C#学习笔记(4)
·C#,深入浅出全接触(二)
·C#,深入浅出全接触(四)
网络编程点击TOP10
·C#编写的windows计算器-源代码
·ASP.NET 程序中常用的三十三种代码
·用C#实现木马程序
·VS.net 2005 Beta 下载地址(Express Edition)
·『原创』C#中TreeView类操作全攻略:建立树,新增节点,删除节点,修改节点,拖动节点,与Oracle数据库交互操作(一)
·从零开始学ASP.NET(基础篇)
·"SQL Server不存在或访问被拒绝"问题的解决
·C#版的网站新闻发布系统
·.NET 初 级 读 本
·c#操作word表格
精选专题

C# IDataReader造成的资源泄漏

作者: 来源:http://www.xgdown.com/ 时间:2007-9-16 10:42:53

C# IDataReader造成的资源泄漏(1)   在ADO(+)数据访问的时候,MS曾经在其出版的书籍中强调过(有可靠证据),尽量不要使用使用DataSet访问对象,而是使用IDataReader这个只读的向前的记录集访问,的确,这是有一定的道理的,DataSet是把数据集先置于内存中,然后告诉缓存起来,断开连接,IDataReader是直接读取的.
  在数据量较少的情况下,DataSet和IDataReader的优劣并没有非常明显的优劣,然而,当数据流量达到一定量(200条左右),这和您的计算机的硬件配置有关,IDataReader的优势就很明朗了.
  在访问数据量较多的时候,如果您热衷于使用IDataReader读取数据库,那么,以下的一个问题是很明显的,如果线路阻塞,记录异常关闭,线路突然中止,这时候就数据库服务器中闲置了一条任何程序都无法再利于的线程-资源泄漏了.曾经,可以时候Close关闭链接池的,但,难道要每次DataBind完毕了操作这个么?如果DataBind失败,而您又使用了Catch语句,那这个线路又闲置了.根据本人的经验,在WinApp的开发中,.Net所限制的线路最大的pool是21,在Web开发中,更少,4条抑或更少.
  这里介绍一种方法,使用Delegates关闭,使用委托的优势就是自动关闭,每次完毕,自动激发这个委托.

  

public class DBComponent{
    public delegate void IDataReaderHandler(IDataReader reader);
    public static void GetAuthor(string authorID,IDataReaderHandler handler){
    using(SqlConnection conn=new SqlConnection("server=.;Trusted_Connection=True;DATABASE=pubs")){
       SqlCommand command=new SqlCommand("select * from class where [id]=@ID",conn);
       command.Parameters.AddWithValue("@ID",authorID); 
       conn.Open();

       using(SqlDataReader rdr=command.ExecuteReader(CommandBehavior.CloseConnection)){
        handler(rdr);
       }
    }
    }
}


注意到handler(rdr);这是引发委托的语句.

  页面使用的时候:
public class WebForm1 : System.Web.UI.Page
{
 protected System.Web.UI.WebControls.DataGrid DataGrid1;


 private void Page_Load(object sender, System.EventArgs e){
共2页 9 7 [1] [28 :>

C# IDataReader造成的资源泄漏 相关文章:
C# IDataReader造成的资源泄漏 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com