C# Firebird客户端连接池无法正常工作

C# Firebird客户端连接池无法正常工作,c#,.net,.net-core,firebird,firebird-.net-provider,C#,.net,.net Core,Firebird,Firebird .net Provider,FirebirdClient中的连接池似乎已断开。当查询已经为空但我得到一个异常时,它应该对我的查询进行排队。我需要一个如何处理这个问题的帮助 我正在使用FirebirdClient 7.1.1版。我正在运行控制台.Net核心应用程序版本2.2.0,我正在连接Firebird 3.0。 我执行4个并发查询。我已将MaxPoolSize设置为2。因此,没有足够的连接来执行所有查询 使用制度; 使用System.Threading.Tasks; 使用FirebirdSql.Data.Firebird

FirebirdClient中的连接池似乎已断开。当查询已经为空但我得到一个异常时,它应该对我的查询进行排队。我需要一个如何处理这个问题的帮助

我正在使用FirebirdClient 7.1.1版。我正在运行控制台.Net核心应用程序版本2.2.0,我正在连接Firebird 3.0。 我执行4个并发查询。我已将MaxPoolSize设置为2。因此,没有足够的连接来执行所有查询

使用制度; 使用System.Threading.Tasks; 使用FirebirdSql.Data.FirebirdClient; 名称空间控制台AP3 { 班级计划 { 私有常量字符串connStr= User=SYSDBA;Password=***;Database=/opt/firebird/base/db.fdb;DataSource=192.168.2.1;Port=3050;连接生存期=15;Pooling=true;MinPoolSize=0;MaxPoolSize=2;; 私有静态无效连接字符串名称 { Console.WriteLine$>>>>开始>>>>>>{name}; var cmd=新的FBM命令 从MON$ATTACHMENTS a中选择count*,其中a.MON$remote_进程如“%ConsoleApp3.dll”; 使用cmd.Connection=new FbConnectionconnStr { 尝试 { cmd.Connection.Open; var id=Convert.ToInt32cmd.ExecuteScalar; Task.Delay1000; Console.WriteLine$>>>>>完成>>>>>>>>{name}结果{id}; } 捕获异常e { Console.WriteLine$>>>>>错误>>>>>>{name}; Console.writeline; } } } 静态环[]args { var t1=Task.Run=>Connectconn1; var t2=Task.Run=>Connectconn2; var t3=Task.Run=>Connectconn3; var t4=Task.Run=>Connectconn4; Task.WaitAllt1、t2、t3、t4; 控制台。写入线>>>>>>>>>>>>>>完成>>>>>>>>>>>>>>>>>; Console.ReadKey; } } } 当数据库连接被回收到连接池时,我希望没有空闲连接的查询将被排队并执行,但我得到了以下异常:

System.InvalidOperationException: Connection pool is full.
   at FirebirdSql.Data.FirebirdClient.FbConnectionPoolManager.Pool.CreateNewConnectionIfPossibleImpl(ConnectionString connectionString)
   at FirebirdSql.Data.FirebirdClient.FbConnectionPoolManager.Pool.GetConnection(FbConnection owner)
   at FirebirdSql.Data.FirebirdClient.FbConnection.Open()
   at ConsoleApp3.Program.Connect(String name) in C:\Projects\ConsoleApp3\ConsoleApp3\Program.cs:line 22

提示:试试邮件列表——据我所知,你的期望是错误的。为什么您认为您的查询会排队?在任何情况下,这可能更适合在Firebird网络提供商邮件列表/Google组上询问。我的预期基于postgres数据库客户端Npgsql的行为。与该客户端相同的代码可以正常工作。我没有例外,我有正确的数据。也许是postgress客户端的行为错误?或者可能是未指定的实现定义的行为。无论如何,向提供者开发者询问他所做的选择会更有效,就像上面建议的那样。似乎不仅仅是Npgsql这样做。正如该页上所述,如果已达到最大池大小且没有可用连接,则请求将排队。