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"];
        }
    }
}