2
我正在托管使用mysql连接器的WCF服务。由于某种原因,每5-10分钟一次,我收到一个错误,说明mysql已经在使用中。我该怎么办?设置它以阻止它,让它为每个线程创建一个新的连接,或设置一个管理器创建一组连接并阻塞,直到连接变为可用。实际上,异步调用已经完成了最后一部分?最后最好的方法来阻止,直到另一个线程完成并从该线程获取信息?C#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
我不认为创建连接查询是一个好主意。 – Will
@高,这不会为每个请求创建一个连接。它从ADO.NET为您管理的连接池中抽取一个。在using语句结束时,这个连接会简单地返回到连接池,以便它可以重用。就性能而言,这将是最快的方式。阅读以下主题以获取有关连接池的更多信息:http://dev.mysql.com/doc/refman/5.0/en/connector-net-programming-connection-pooling.html –
啊,谢谢你提供的信息。不知道连接器是如何工作的。 – Will