Npgsql C# throwing Operation is not valid 由于对象的当前状态突然
Npgsql C# throwing Operation is not valid due to the current state of the object suddenly
我有一个 C# winform 应用程序,一切正常,但在长时间使用该应用程序后,我开始收到此错误
Operation is not valid due to the current state of the object
错误来自每 5 秒执行一次以从数据库中获取姓名列表的函数
NpgsqlCommand cmd = new NpgsqlCommand(
String.Format("select pid,name from queue order by id"), conn);
NpgsqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
queue[(int)reader["pid"]] = (string)reader["name"];
}
此列表包含队列中的名称,需要尽快更新
根据我的阅读,这似乎是 .net 框架的新限制..
执行此操作的任何更好方法或避免此错误的解决方法?
编辑:顺便说一句,我不明白这个限制!我添加了一个将超过 100000 个条目输入数据库的函数,但我没有收到此错误!
reader 和 cmd 使用后是否进行处理?这 可能 与内存泄漏有关,其中 postgres-provider 在一段时间后最终 运行 耗尽了内部资源。
您应该遵循他们主页上描述的使用模式:http://www.npgsql.org/doc/
using (NpgsqlCommand cmd = new NpgsqlCommand(
String.Format("select pid,name from queue order by id"), conn))
{
using (NpgsqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
queue[(int)reader["pid"]] = (string)reader["name"];
}
}
}
我有一个 C# winform 应用程序,一切正常,但在长时间使用该应用程序后,我开始收到此错误
Operation is not valid due to the current state of the object
错误来自每 5 秒执行一次以从数据库中获取姓名列表的函数
NpgsqlCommand cmd = new NpgsqlCommand(
String.Format("select pid,name from queue order by id"), conn);
NpgsqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
queue[(int)reader["pid"]] = (string)reader["name"];
}
此列表包含队列中的名称,需要尽快更新
根据我的阅读,这似乎是 .net 框架的新限制..
执行此操作的任何更好方法或避免此错误的解决方法?
编辑:顺便说一句,我不明白这个限制!我添加了一个将超过 100000 个条目输入数据库的函数,但我没有收到此错误!
reader 和 cmd 使用后是否进行处理?这 可能 与内存泄漏有关,其中 postgres-provider 在一段时间后最终 运行 耗尽了内部资源。
您应该遵循他们主页上描述的使用模式:http://www.npgsql.org/doc/
using (NpgsqlCommand cmd = new NpgsqlCommand(
String.Format("select pid,name from queue order by id"), conn))
{
using (NpgsqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
queue[(int)reader["pid"]] = (string)reader["name"];
}
}
}