C#Mysql和multithreading?

我正在托管一个使用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(); } } } 
 未处理的exception:System.NotImplementedException:未实现所请求的function。
   at MySql.Data.MySqlClient.MySqlConnection.EnlistTransaction(System.Transactions.Transaction transaction)[0x00000] in:0
  在MySql.Data.MySqlClient.MySqlConnection.Open()[0x00000]中: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为您管理的连接池中,从而使您不会遇到创建可能减慢速度的多个连接的风险。 此代码也是完全可重入的,因此根据定义,thread safe =>它可以根据您的意愿从多个线程并发执行。