我正在启动一个项目,程序将每 x 秒(比如 10 秒)轮询一次数据库并获取特定时间段内的行(基于日期时间字段)。对于每个民意调查,这可能是 0 - 40 行左右。在运行一些业务逻辑之后,这些行将被放入另一个数据库中。我最初的想法是会有一些逻辑将行(转换为对象)放在一个集合中,比如一个列表,并且列表有一个在添加项目时触发的事件。最后,将行放入dest。D B。
我是这样想的:
伪代码
private List<Person> PersonList;
public MyClassConst()
{
PersonList = new List<Person>();
PersonList.AddingEvent += HandleAddingEvent;
}
void HandleAddingEvent(...)
{
// run business logic/rules
// insert/update row in destination DB
}
void Timer_Elapsed()
{
// query and convert to Person objects
var personData = _personDao.GetPersons();
for(int i=0; i< personData.Count; ++i)
{
PersonList.add(personData[i]);
}
}
我担心的是,如果有 40 行,事件将被触发 40 次,这似乎并不理想。在将所有 40 个对象添加到列表中之前,我将如何禁用该事件。
如果有比使用列表更好的解决方案,请务必分享。