Я пишу класс базы данных, используя C#, который взаимодействует с многопоточным sdk. Я должен использовать только одно соединение (не нужно говорить!) Тем не менее, я всегда получаю ошибки о подключении и datareaders. Помогаю помочь.C# mysqlreader multithread fail
Вот структура моего кода
static class Db
{
static MySqlConnection conn = new MySqlConnection(connectionString);
private static void Connect()
{
if (conn.State == ConnectionState.Closed)
conn.Open();
}
private static void DisConnect()
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
static int Insert()
{
Connect();
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.ExecuteNonQuery();
return Convert.ToInt32(cmd.LastInsertedId);
DisConnect();
}
public static DataTable select(string sql) //Especially fails here
{
Connect();
MySqlCommand cmd = new MySqlCommand(sql, conn);
using (MySqlDataReader read = cmd.ExecuteReader())
{
if (read.HasRows){ Some Code... }
}
DisConnect();
}
}
Каковы ошибки _exactly_? –
1. Вероятное состояние гонки I/O обнаружено при копировании памяти, 2. Существует уже открытое соединение. 3. Соединение должно быть действительным и открытым. – fatih
Почему вы используете все статичное? Укажите экземпляр для потока? –