Я думаю, первое, на что следует обратить внимание, почему соединение будет открыто в течение 8 часов подряд?
Я думаю, что в большинстве случаев вы подключаетесь к базе данных, делаете свое дело и закрываете ее:
using (var conn = new MySqlConnection(connString))
{
// do what you need here
}
Блок using создаст соединение, которое действует только внутри блока. Когда блок заканчивается, метод Dispose вызывается для соединения и закрывает и правильно удаляет объект соединения. Это предотвратит использование вашим приложением доступных соединений, когда они не нужны.
Если вы находитесь в ситуации, когда вам необходимо определить, открыто ли соединение, ваша переменная соединения будет иметь свойство State
, которое будет перечислением ConnectionState.
Вы можете проверить это, используя что-то вроде этого:
if (conn.State != ConnectionState.Open)
{
conn = new MySqlConnection(connString);
}
Надеюсь, это поможет.