【发布时间】:2010-11-06 14:40:55
【问题描述】:
我有一个 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 语句,而是在计时器中执行此操作并更新客户端使用的全局变量。
【问题讨论】:
-
你能解释一下这个场景,为什么你需要在计时器中编写代码来从数据库中读取东西吗? DB 值的变化频率如何?