C# 关闭后连接仍处于空闲状态

C# 关闭后连接仍处于空闲状态,c#,postgresql,npgsql,C#,Postgresql,Npgsql,我有一个C#客户端应用程序,需要每15分钟检查一次Postgres db上的表。问题是,我需要将这个客户机安装到大约200个客户机中,因此,我需要在查询之后关闭数据库连接 我使用.Close()方法,但如果我检查Postgres DB上的pg_stat_activity表,我可以看到连接仍然在空闲状态下打开。我如何解决这个问题?是否可以关闭连接 谢谢, Andrea与大多数ADO.NET提供程序一样,Npgsql默认使用连接池。当您Close()使用NpgsqlConnection对象时,一个表

我有一个C#客户端应用程序,需要每15分钟检查一次Postgres db上的表。问题是,我需要将这个客户机安装到大约200个客户机中,因此,我需要在查询之后关闭数据库连接

我使用.Close()方法,但如果我检查Postgres DB上的pg_stat_activity表,我可以看到连接仍然在空闲状态下打开。我如何解决这个问题?是否可以关闭连接

谢谢,
Andrea与大多数ADO.NET提供程序一样,Npgsql默认使用连接池。当您
Close()
使用
NpgsqlConnection
对象时,一个表示Npgsql使用的实际底层连接的内部对象会进入池中重新使用,从而节省了不必要地创建另一个连接的开销。(有关更多信息,请参阅)

这非常适合大多数应用程序,因为通常需要在一秒钟内多次使用连接


它根本不适合您,但如果您在连接字符串中包含选项
Pooling=false
,它将覆盖此默认值,并且
Close()
确实将关闭实际连接。

这就是我喜欢此网站的原因!来自非常熟练的人员的快速响应!谢谢你的帮助!是否有可能在关机时停止轮询并关闭所有“后台”连接?啊,抱歉,问题是错误的:即使
pooling=true
,是否有可能关闭所有连接?@dominicjons使用
NpgsqlConnection.ClearPool()
清除与特定连接关联的池,
NpgsqlConnection.ClearAllPools()
来清除所有池。我想了解让它空闲状态是否有问题。我只是好奇!对于100和200个客户端的最大连接数,是的,它是:)解决相同问题的另一种方法是让100-200个客户端连接到您编写的单个服务器应用程序(可能是IIS上的web应用程序),然后成为数据库的单个客户端。除此之外,它还允许您更多地锁定postgresql。使用这种方法,您可能希望撤销我在回答中提出的建议,因为您希望池化意味着在所有100-200个用户之间共享少量连接。@Andrea Girardi是的!我不这么认为!太明显了!谢谢。@Jon Hanna谢谢你的建议,真的很有帮助!我会记住那个项目和下一个项目!