C# 读卡器关闭时读取数据的尝试无效错误
在表单加载时,下面的代码运行良好。它以在计时器上运行的方法(间隔5秒)运行代码 我注意到,在DataGridView中抛出错误之前,它将填充2行。 不确定为什么会抛出“读卡器关闭时读取的尝试无效错误”C# 读卡器关闭时读取数据的尝试无效错误,c#,winforms,C#,Winforms,在表单加载时,下面的代码运行良好。它以在计时器上运行的方法(间隔5秒)运行代码 我注意到,在DataGridView中抛出错误之前,它将填充2行。 不确定为什么会抛出“读卡器关闭时读取的尝试无效错误” 您的代码块已更正如下,可能对您有用: try { ..... using (MySqlConnection conn = new MySqlConnection(connString)) {
您的代码块已更正如下,可能对您有用:
try
{
.....
using (MySqlConnection conn = new MySqlConnection(connString))
{
conn.Open();
using (var cmd = new MySqlCommand("SELECT * FROM table", conn))
{
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
.....
}
reader.Close();
}
.....
}
conn.Close();
}
}
为什么不在这里使用
语句创建MySqlConnection
的实例,因为以下几个原因,这是最好的做法?你把它放在这里似乎不对。那么在哪里创建新连接呢?您不能使用disposed连接。没有必要使用
语句对中的内容调用Dispose()
。您也可以向上投票接受的答案:)从上面窃取@Amy的评论:“没有必要对using语句中的内容调用Dispose()。”或Close()
。使用块可以为您实现这一点。
try
{
.....
using (MySqlConnection conn = new MySqlConnection(connString))
{
conn.Open();
using (var cmd = new MySqlCommand("SELECT * FROM table", conn))
{
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
.....
}
reader.Close();
}
.....
}
conn.Close();
}
}