У меня есть слой базы данных C # со статическим методом чтения, который вызывается каждую секунду в фоновом таймере.
В настоящее время я создаю SqlCommand, SqlConnection один раз в качестве члена класса.
В каждом вызове метода я выполняю команду, чтобы получить результаты, я делаю так, чтобы избежать создания соединения и команды каждую секунду, но я боюсь, что исключение происходит в этом методе, который разорвет соединение или поместит объект недопустимое состояние.
Это моя текущая реализация (Обработчик таймера)
static void GetBarTime(object state)
{
lock (_staticConnection)
{
SqlDataReader dataReader = null;
try
{
dataReader = _getMaxTimeCommand.ExecuteReader();
dataReader.Read();
_currentTick = dataReader.GetInt32(0);
}
catch (Exception ex)
{
//Log the error
}
finally
{
dataReader.Dispose();
}
}
}
Какая лучшая практика?
БОЛЬШЕ ДЕТАЛЕЙ:
Я делаю это по таймеру, так как происходит повторное обновление таблицы каждую секунду, и есть еще один открытый метод, используемый множеством клиентов и вызываемый каждую секунду, чтобы получить последнее значение.
Таким образом, вместо выполнения оператора select каждую секунду для каждого клиента, я делаю это в таймере и обновляю глобальную переменную, которая используется клиентами.