如何在多个线程之间共享一个mysql连接?

在我的应用程序中,我使用dev.mysql.com的Mysql.Data连接器写入我的mysql数据库,我希望最大化性能,所以我不想打开许多MySql连接。 但最终当我尝试使用一个全局静态连接时:

MySqlConnection connect = new MySqlConnection(connectionString); connect.Open(); StaticData.mysqlConnect = connect; ... // in my threads lock (StaticData.mysqlConnect) { foreach (Object param in records) { using (MySqlCommand command = conn.CreateCommand()) { command.CommandText = "some request"; //... command.ExecuteNonQuery(); } } } 

我得到了System.Threading.SynchronizationLockException。 所以我的问题是:什么是使用dev mysql连接器在不同线程之间共享一个连接的正确方法?

什么是使用dev mysql连接器在不同线程之间共享一个连接的正确方法?

别。 在每个线程上有不同的连接。

连接应该是池,所以当你打开一个新的连接时,它不会真正打开一个新的连接,它只是从池中获取一个打开的连接。

因此,没有理由在线程之间共享这种长期存在的连接。 只需为每个逻辑事务的范围创建一个新连接,并让连接池处理其余事务。