gpt4 book ai didi

c# - Npgsql C# throwing Operation is not valid 由于对象的当前状态突然

转载 作者:搜寻专家 更新时间:2023-10-30 22:09:15 25 4
gpt4 key购买 nike

我有一个 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# - Npgsql C# throwing Operation is not valid 由于对象的当前状态突然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36790026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com