在我的应用程序中,我使用 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.Synchronization LockException。所以我的问题是:使用 dev mysql 连接器在不同线程之间共享一个连接的正确方法是什么?
使用 dev mysql 连接器在不同线程之间共享一个连接的正确方法是什么?
不。每个线程上有不同的连接。
连接应该被池化,所以当你打开一个新连接时,它不会actually打开一个新连接,它只是从池中获取一个打开的连接。
因此,没有理由在线程之间共享如此长的连接。只需为每个逻辑事务的范围创建一个新连接,然后让连接池处理其余的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)