C# 多线程 操作数据 报ExecuteReader 必须有开启与可用的连接。连接目前的状态已关闭

我这边写了好几个多线程多线程的方法操作数据库都是可是有一个操作数据的方法老是报错方法List<Email>listemail=newList<Email>();lock(... 我这边写了好几个多线程
多线程的方法 操作数据库 都是可是有一个操作数据的方法老是报错
方法 List<Email> listemail = new List<Email>();
lock (obj)
{
using (SqlDataReader sdr = DbHlper.ExecuteReader(sql,CommandType.Text))
{
while (sdr.Read())
{
Email email = new Email(
sdr["id"].ToString(),
sdr["Email_BT"].ToString()
);
listemail.Add(email);
}
}
数据库
SqlCommand com = new SqlCommand(sql,Con);

lock (obj)
{
com.CommandType = type;
com.Parameters.AddRange(spr);
return com.ExecuteReader();
}

只有这个一个方法报错
不知道是哪的问题
展开
 我来答
匿名用户

推荐于2016-10-16
展开全部
这句之前调用 DbHlper.open();
using (SqlDataReader sdr = DbHlper.ExecuteReader(sql,CommandType.Text))
更多追问追答
追问
SqlCommand com = new SqlCommand(sql,Con);
这里其实已经open 了
追答
那你得加锁才行,.ExecuteReader同一时间只能有一个的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式