1
在我的应用程序中,我使用来自dev.mysql.com的Mysql.Data连接器写入我的mysql数据库,并且我想最大化性能,所以我不想打开很多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连接器在不同线程之间共享一个连接?
不是最大大小1的连接池究竟是OP在寻找什么?池的想法是不为每个事务创建一个新的连接,所以我有点困惑你在推荐什么 –
@MiserableVariable'MySqlConnection'类型本身*已经*维护一个连接池。他不需要在现有机制之上重新实现连接池机制。 – Servy
哦!我不知道'MySqlConnection'。在这种情况下,你写道创建每个事务的新连接是最好的方法 –