gpt4 book ai didi

C# Mysql 和多线程?

转载 作者:行者123 更新时间:2023-11-30 13:28:11 28 4
gpt4 key购买 nike

我正在托管一个使用 mysql 连接器的 WCF 服务。由于某种原因,每 5-10 分钟一次,我收到一条错误消息,指出 mysql 已在使用中。我应该怎么办?将其设置为阻塞,让它为每个线程创建一个新连接或设置一个管理器,该管理器创建一定数量的连接并将阻塞直到连接可用。实际上异步调用已经完成了最后一部分吗?最后,阻塞直到另一个线程完成并从该线程获取信息的最佳方法是什么?

public static int Query(this IDbConnection olddb, string query, params object[] args)
{
using (var db = olddb.CloneEx())
{
db.Open();
using (var com = db.CreateCommand())
{
com.CommandText = query;
for (int i = 0; i < args.Length; i++)
com.AddParameter("@" + i, args[i]);

return com.ExecuteNonQuery();
}
}
}
Unhandled Exception: System.NotImplementedException: The requested feature is not implemented.  at MySql.Data.MySqlClient.MySqlConnection.EnlistTransaction (System.Transactions.Transaction transaction) [0x00000] in :0  at MySql.Data.MySqlClient.MySqlConnection.Open () [0x00000] in :0

最佳答案

每当您需要简单地查询 SQL 服务器时:

using (var conn = new MySqlConnection("Some connection string"))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT foo FROM bar";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
// process the results
}
}
}

这确保连接返回到 ADO.NET 为您管理的连接池中,这样您就不会冒创建多个连接的风险,这可能会减慢速度。此外,此代码是完全可重入的,因此根据定义是线程安全的 => 它可以从任意多个线程并发执行。

关于C# Mysql 和多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6866421/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com