100分求帮忙解决死锁问题
程序是这样写的:
在类article.cs中
defConnStr=数据库连接
public static SqlDataReader ArticleInner(int ArticleID)
         {
             SqlConnection con = new SqlConnection(defConnStr);
             SqlCommand cmd = new SqlCommand("SP_GetArticleDetail", con);
             cmd.CommandType = CommandType.StoredProcedure;
             //存储过程参数添加
               cmd.Parameters.Add("@ID", SqlDbType.Int);
             cmd.Parameters["@Article_ID"].Value = ArticleID;
             con.Open();
             return (SqlDataReader)cmd.ExecuteReader();
         }
显示页面中:
SqlDataReader dr;
dr = Article.ArticleInner(articleID);
if (dr.Read())
{
   ...
}
else{
   ...
}
如果是,用什么样的方法写比较好呢?请指教
------解决方案--------------------1、不要返回DataReader,你可以返回一个实体类列表。
2、用Lock关键字锁住代码。
------解决方案--------------------public static SqlDataReader ArticleInner(int ArticleID, Repeater RP) 
       { 
           SqlConnection con = new SqlConnection(defConnStr); 
           SqlCommand cmd = new SqlCommand("SP_GetArticleDetail", con); 
           cmd.CommandType = CommandType.StoredProcedure; 
           //存储过程参数添加 
             cmd.Parameters.Add("@ID", SqlDbType.Int); 
           cmd.Parameters["@Article_ID"].Value = ArticleID; 
           try  
           {   con.Open(); 
               RP.DataSource=cmd.ExecuteReader();         //////////////// 这里,不要直接用Reader,使用DataAdapter 填充到DataTabl 里
               RP.DataBind(); 
           }  
           finally  
           {  
               cmd.Dispose();  
               con.Close();  
               con.Dispose();  
           }  
       } 
------解决方案--------------------由于不了解你的程序是如何设计的,乱说对你也无益。指给你一个文章,希望对你有帮助
http://blog.csdn.net/octverve/archive/2007/09/08/1776867.aspx
------解决方案--------------------Exception information: 
   Exception type: InvalidOperationException 
   Exception message: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached. 
大概意思是:连接超时,可能原因是连接池已满.
很多使用完的连接没有关闭,建议检查所有与数据库相关的代码是否正确关闭连接,特别是使用了Reader的地方.
------解决方案--------------------如果是连接池不够
在配置文件中增加连接池  
<add   key="ccc"   value="Server='.';UID=sa;password=sa;Database='Northwind';Min   Pool   Size=7;Max   Pool   Size=50"   />
------解决方案--------------------不是死锁,是连接数超出连接池最大连接数了!
原因是你没有及时关闭不需要的连接。连接要用完后立即关闭。