C#MySQL连接池

C#MySQL连接池,c#,mysql,.net,multithreading,C#,Mysql,.net,Multithreading,我正在使用C#multi-threading应用程序,并使用MySQL与整个应用程序进行单连接。但当两个或多个线程试图同时访问数据库时,我得到以下错误: 已经有一个打开的DataReader与此连接关联,必须先关闭该连接 我的连接代码如下 public static _connectionSetup = new MySqlConnection("Server=server ; Database=database;User ID=user;Password=pass;Pooling=true;")

我正在使用
C#multi-threading
应用程序,并使用
MySQL
与整个应用程序进行单连接。但当两个或多个线程试图同时访问数据库时,我得到以下错误:

已经有一个打开的
DataReader
与此
连接关联,必须先关闭该连接

我的连接代码如下

public static _connectionSetup = new MySqlConnection("Server=server ; Database=database;User ID=user;Password=pass;Pooling=true;");
当我需要使用连接时,我使用以下代码:-

using (MySqlConnection connection =_connectionSetup )
{
    using (MySqlCommand command = new MySqlCommand("proc", connection))
    {
        ....
    }
}
我尝试使用了
pooling=true
,并为两个不同的线程创建了两个独立的连接,但仍然出现了上述错误。
我错过什么了吗


如何实现连接池,以便所有线程都使用单独的连接,并且不会导致任何问题?

池在默认情况下处于启用状态,因此您不需要该连接字符串参数

不要共享
MySqlConnection
实例。
就是这样


池不是您在代码中实现的东西,它是由ADO.NET为您完成的。

不要使它成为静态的,使用
中创建连接,您就完成了。您不认为在使用过程中始终创建连接会带来成本,因为一次又一次地获取连接是非常昂贵的操作。不。请阅读上面链接中的我的答案,它将比我在评论中的解释更好。感谢链接,它非常有用,我是C#的新手,根据链接,当我们关闭连接时,它将返回ADO.NET连接池,而不是关闭服务器连接。我不确定我是否编写了新的MySqlConnection(“Server=ser….
是ADO.NET吗?(我在上面的代码中使用ADO.NET吗?我不知道)如果我使用
\u connectionSetup
实例变量,那么当我使用实例变量打开连接时,我将再次连接到数据库服务器或从池中获取第二个或更多的连接。这都是ADO.NET。但这取决于是否使用连接池。是的,默认情况下MySql启用了池(也适用于其他数据库管理系统,如Sql Server)。在连接字符串中添加
Pooling=True;
并没有什么坏处。但是,再说一次,。长话短说,如果不在连接字符串中指定
Pooling=false
,则会启用池。我没有使用
ADO.NET
使用自己的代码获取数据并保存数据,如何确保每个后台工作线程使用单独的连接进行工作,不要在上面提到错误