ここに私のコードですが、私は読者を閉じて開きます。いくつかのスレッドがこの機能に同時にアクセスできますが、ロックがあります。これは、初めに数回動作しますが、遅かれ早かれ、私が与えるもの私はこのエラーが発生し続ける: "リーダーが閉じているときに読み込みを呼び出す試みが無効です"
private IList<BursaUser> GetUsers(SqlCommand cmd)
{
IList<User> users = new List<User>();
User user;
lock (thisLock)
{
SqlDataReader dr = null;
try
{
Conn.Open();
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (dr.Read())
{
user = new User
{
UserId = Convert.ToInt32(dr["WorkerNum"]),
CompanyName = dr["CompanyName"].ToString(),
WorkerName = dr["WorkerFirstName"] + " " + dr["WorkerFamilyName"],
Phone = dr["Phone"].ToString()
};
if (dr["QueueNum"] != null && dr["QueueNum"] != DBNull.Value)
{
user.Queue = new Queue
{
HasAlreadyEntered =
dr["flgAppear"] != null && dr["flgAppear"].ToString() == "Y",
IsFromWebsite = dr["TookFrom"].ToString() == "1",
IsMelutash = dr["IsMelutash"].ToString() == "1",
TimeOrdered = DateTime.Parse(dr["DateTime1"].ToString()),
QueueNum = Convert.ToInt32(dr["QueueNum"]),
SMS = dr["SMSCode"].ToString()
};
}
users.Add(user);
}
}
catch (Exception e)
{
throw e;
}
finally
{
if (dr != null)
{
dr.Close();
dr.Dispose();
}
}
return users;
}
}
で例外「リーダーがクローズされたときに無効な試みがリードを呼び出すために」を得ますか?
[返信DataReader from DataLayer usingステートメント](http://stackoverflow.com/questions/850065/return-datareader-from-datalayer-in-using-statement) – nawfal