【发布时间】:2010-10-07 07:24:03
【问题描述】:
我有一个长时间运行的程序,它每 5 分钟执行一些 mySQL 查询(定时线程)。在它运行大约 10 小时后,会引发 NullReferenceException,并带有以下堆栈跟踪:
at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId)
bei MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int32& insertedId)
at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlDataReader.Close()
at MySql.Data.MySqlClient.MySqlCommand.ResetReader()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
at MyOwnProgram.Mysql.sendData(String sqlCommmand)
sendData方法如下(lockDB是Object类型)
public void sendData(string sqlCommmand) {
try {
using(MySqlCommand command = connection.CreateCommand()) {
command.CommandTimeout = 5;
command.CommandText = sqlCommmand;
lock(lockDB) {
command.ExecuteNonQuery();
}
}
} catch(MySqlException e) {
throw e;
} catch(Exception e) {
// do some logging
}
}
在调用 mySQL-Class 的构造函数时打开连接,并在调用析构函数或调用 dispose() 时释放连接。谁能告诉我我做错了什么?
【问题讨论】:
标签: c# sql mysql nullreferenceexception