2
私はmysqlコネクタを使用するWCFサービスをホストしています。なんらかの理由で、5〜10分に1回、mysqlがすでに使用されているというエラーが表示されます。私は何をすべきか?ブロックするように設定し、スレッドごとに新しい接続を作成するか、または設定された数の接続を作成して接続が利用可能になるまでブロックします。実際に非同期呼び出しはすでにその最後の部分をしていますか?最後に、別のスレッドが完了してそのスレッドから情報を取得するまでブロックする最良の方法は何ですか?あなたは、単にあなたのSQLサーバーを照会する必要が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
@High、これはリクエストごとに接続を作成しません。 ADO.NETが管理する接続プールから1つを取り出します。そしてusingステートメントの終わりに、この接続は接続プールに戻され、再利用できるようになります。パフォーマンスの面では、可能な限り最速の方法です。接続プーリングの詳細については、次のトピックを参照してください。http://dev.mysql.com/doc/refman/5.0/en/connector-net-programming-connection-pooling.html –
ああ、情報をありがとう。コネクターがそのように働いているという考えはありませんでした。 – Will